美文网首页
使用lxml爬取网页的一些心得

使用lxml爬取网页的一些心得

作者: waterchinap | 来源:发表于2018-11-22 20:43 被阅读0次

准备工作

一般是用requests获取页面内容。

def get_page(url):
    headers = {'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'}
    re = requests.get(url, headers=headers)
    html = re.text
    return html

获取一个树对象

tree = etree.HTML(page)

对树对象进行操作

etree.html返回的是一个elementtree。对这个树进行操作的文档很少,还没有仔细研究。
对这个树进行XPATH选取操作后会形成一个列表。列表的每一项是一个element对象。
element对象可以进行如何操作:

  • 如果要提取这个对象,比如一个块,以及它下面的所有内容,可以用输出的方式。这种方式特别适合爬取一个网页的部分内容,可以把内容和格式一起爬下来。目前发现保存的文件是ASCII码,还不知道如何转换,但在浏览器中显示是正确的。
etree.tostring(tree)
#to a string
etree.ElementTree(tree).write()
#output as a file
  • 可以对这个对象进行操作,如修改文本,属性等。
    • 比如把一个标签时的相对地址换成绝对地址等。
    • 提取A标签中的链接等。

这两种操作基本上可以进行网页内容的爬取了。现在还没有搞明白的是编码的问题,为什么爬取下来的HTML文件中文无法在编辑器里正确显示(在浏览器里是正常的)。

已经找到解决办法了,和tostring()方法一样,就是加一个ENCODING=“UTF-8”的参数就可以了。

相关文章

网友评论

      本文标题:使用lxml爬取网页的一些心得

      本文链接:https://www.haomeiwen.com/subject/mdkrqqtx.html