今天爬取一个小说网站,但是返回的结果却不包含小说的内容。
网页源码是:
爬虫代码如下:
import requests
from lxml import etree
url = 'http://www.xbiquge.la/7/7004/3246381.html'
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36',
}
response = requests.get(url,header).content.decode()
print(response)
代码执行的结果:
刚开始以为是ajax请求,用开发者工具(F12)看了之后才发现并不是。然后我又将爬取的结果写入本地文件,竟然发现小说的内容出现了。
with open('zhetian.html','w',encoding='utf-8')as f:
f.write(response)
这么看请求是成功了,但是response打印有问题,那对response进行解析一下看看吧。
from lxml import etree
data = etree.HTML(response)
text =data.xpath('//*[@id="content"]/text()')
print(text)
这下总算成功了。搞定收工!!!
原理呢,我查了一下(不知道是不是),etree.HTML()将字符串解析为html文档 HTML 可以自动补全 li标签 body和html标签。