使用requests+lxml实现简单的斗鱼信息爬虫(适用于新手)

1、发送请求、获取响应

以爬取斗鱼主播房间的部分信息为例,网址为https://www.douyu.com/directory/all ,先导入requests模块,通过requests发送请求、然后会获取响应。

import requests
from lxml import etree

url="https://www.douyu.com/directory/all"

headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"}

response=requests.get(url,headers=headers)

使用content得到响应的内容,并对内容进行解码

html_str=response.content.decode('utf-8','ignore')

2、lxml的使用

lxml是支持xpath的,所以使用lxml可以方便的解析返回的html字符串,快速的定位特定元素以及节点信息,提高了爬虫的效率。下面使用lxml中的etree模块解析html。

html=etree.HTML(html_str,parser=etree.HTMLParser(encoding='utf-8'))

使用xpath定位爬取信息的节点,比如主播房间的标题和主播名。由下图可以知道所有的房间信息都在ul标签下的li标签中,最后就可以使用xpath得到所以的li标签内容。
在这里插入图片描述

li_list=html.xpath("//div[@class='layout-Module-container layout-Cover ListContent']/ul[@class='layout-Cover-list']/li")

3、循环遍历提取内容

获取所有的房间的部分信息,需要对所有的li标签列表进行便利。


for li in li_list:
    item={}
    item["标题"]=li.xpath(".//div[@class='DyListCover-content']/div[@class='DyListCover-info']/h3/text()")[0]
    item["主播名"]=li.xpath(".//div[@class='DyListCover-content']/div[@class='DyListCover-info']/h2/text()")[0]

       
    print(item)

在这里插入图片描述

发布了6 篇原创文章 · 获赞 8 · 访问量 768

猜你喜欢

转载自blog.csdn.net/sinat_39271486/article/details/103915650