使用urllib获取页面以及解析页面
虽然现在有很多爬虫框架可以帮我们方便地爬取页面。
但框架在方便的同时会有各自的限制。并且有很时只是要简单地获取一些信息,没有必要使用框架,使用urllib就能很简单地实现目标。
from urllib import request
headers = { 'User-Agent': 'Mozilla/5.0 Chrome/64.0.3282.186 Safari/537.36', }
url = 'https://xxxxxxxxx'
req = request.Request(url, headers=headers)
response = request.urlopen(req)
data = response.read().decode('UTF-8')
print(data)
这大概是最简单的爬虫程序了。
response.read()读出来的是string,要从string中解析出想要信息很难。此时可以借助lxml。
使用pip install lxml
安装lxml
from lxml import etree
from urllib import request
headers = { 'User-Agent': 'Mozilla/5.0 Chrome/64.0.3282.186 Safari/537.36', }
url = 'https://xxxxxxxxx'
req = request.Request(url, headers=headers)
response = request.urlopen(req)
data = response.read().decode('UTF-8')
html = etree.HTML(response.read().decode('utf-8'))
title = html.xpath('xxxxxxxxx')[0]
print title.text
提取xpath
(1)用chrome打开目标页面,找到要想获取的元素
(2)点击“尾页” -> 右键 -> inspect -> copy -> xpath
目标元素的xpath就存在于剪贴版中了
目前碰到的问题:
如果目标元素是table中的一个元素,复制到的xpath是这样的:
/html/body/div[2]/table[4]/tbody/tr[2]/td[2]/p/span
这个path解析不出来,要把tbody去掉,即
/html/body/div[2]/table[4]/tr[2]/td[2]/p/span
参考链接
如果提示CERTIFICAYE_VERIFY_FAILED参考link解决。
response的用法参考link。
reponse读的页面保存到文件link
Python使用lxml解析HTML responselink
提取xpathlink