xpath爬取新闻
网址:http://www.pzhu.cn/lb.jsp?urltype=tree.TreeTempUrl&wbtreeid=1037我能够使用xpath来匹配到我想要的内容,但是我不会使用循环把每一个都爬取出来,不知道怎么操作,问问大佬,学习下
我想要爬取标题和内容等 顶一顶 本帖最后由 wp231957 于 2021-7-7 21:16 编辑
import requests
from lxml import etree
url="http://www.pzhu.cn/lb.jsp?urltype=tree.TreeTempUrl&wbtreeid=1037"
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36',
}
res=requests.get(url=url,headers=headers)
tree=etree.HTML(res.text)
data=tree.xpath("/html/body/div/div/div/div/div/div/ul/li")
for x in range(0,len(data)):
li=data.xpath("./a/@title")
print(li)
本帖最后由 阿奇_o 于 2021-7-7 21:29 编辑
import requests
from bs4 import BeautifulSoup as BS
from lxml import etree
# 基本思路:利用BS4,解析网页,找到需要的内容
# BS实现步骤:get HTML --> be the soup --> 查找和选择elems --> 数据处理和保存
url = "http://www.pzhu.cn/lb.jsp?urltype=tree.TreeTempUrl&wbtreeid=1037"
# 1.获取网页HTML,然后解析html
webpage = requests.get(url)
soup = BS(webpage.content, "html.parser")# 解析
# 2. 利用lxml库的etree,根据xpath查找需要的内容
# 注:BS并不能处理xpath, 需要用lxml库的etree
dom = etree.HTML(str(soup))
news_xpath = '//*[@id="lineu9_0"]/a/h6'# 第 1 条 新闻标题,右键,检查内容;复制 copy --> copy XPath
# news_xpath = '//*[@id="lineu9_1"]/a/h6'# 第 2 条 新闻标题,
# //*[@id="lineu9_6"]/a/h6# 最后一条
# 3. 先实现第一条, 然后 找规律,利用规律,循环
print(dom.xpath(news_xpath).text)
#
for i in range(7):
print(i+1, dom.xpath(f'//*[@id="lineu9_{i}"]/a/h6').text) # 新闻标题
print(dom.xpath(f'//*[@id="lineu9_{i}"]/a/div').text) # 新闻摘要
print()
# 其他内容,同理可以获取到。
# ps: 爬虫,需要一定的前端知识、网络安全知识,各种解决问题 —— 量力而行。
阿奇_o 发表于 2021-7-7 21:26
谢谢 wp231957 发表于 2021-7-7 21:14
谢谢
页:
[1]