私はり 发表于 2021-7-7 12:49:52

xpath爬取新闻

网址:http://www.pzhu.cn/lb.jsp?urltype=tree.TreeTempUrl&wbtreeid=1037
我能够使用xpath来匹配到我想要的内容,但是我不会使用循环把每一个都爬取出来,不知道怎么操作,问问大佬,学习下
我想要爬取标题和内容等

私はり 发表于 2021-7-7 19:47:13

顶一顶

wp231957 发表于 2021-7-7 21:14:57

本帖最后由 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:26:52

本帖最后由 阿奇_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: 爬虫,需要一定的前端知识、网络安全知识,各种解决问题 —— 量力而行。

私はり 发表于 2021-7-7 22:50:53

阿奇_o 发表于 2021-7-7 21:26


谢谢

私はり 发表于 2021-7-7 22:51:53

wp231957 发表于 2021-7-7 21:14


谢谢
页: [1]
查看完整版本: xpath爬取新闻