比如这个网页
http://www.cs.com.cn/xwzx/hg/201409/t20140924_4521344.html正文分成了好几个分页来显示,骗PV可耻啊
我想用scrapy把这个正文合并起来,看文档中没找到合并的办法
就想到一个思路,如果发现有分页,将网页内容合并起来,再用lxml和xpath提取
测试了一下,思路是可行的,我就想问一下,scrapy是否有自带的方法能更优雅的实现这一过程?
核心代码 片断
from lxml import html
import HTMLParser
import requests
import re
def innerHTML(node):
buildString = ''
for child in node:
buildString += html.tostring(child)
return HTMLParser.HTMLParser().unescape(buildString)
encoding = 'gbk'
source=response.body.decode(encoding,'ignore')
p=re.search(r'countPage = (.*?)/',response.body)
if p:
for i in xrange(1,int(p.group(1))):
url='%s_%d.html' %(response.url.replace('.html',''),i)
source =source+ requests.get(url,headers=headers).content.decode(encoding,'ignore')
content=html.fromstring(source).xpath('//div[@class="Dtext z_content"]')
content=innerHTML(content)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/135340
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.