python怎么利用Xpath抓取京东网商品信息
一、准备工作
在利用XPath抓取京东网商品信息之前,我们需要先安装Python的XPath库和相关依赖库。可以通过pip命令进行安装,具体安装命令如下:
pip install lxml
二、获取页面内容
开始进行商品信息的抓取之前,我们需要先获取京东网商品页面的HTML内容。可以使用Python的requests库发送GET请求来获取页面内容,具体示例代码如下:
import requests
def get_page_content(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.text
else:
return None
url = 'https://www.jd.com'
page_content = get_page_content(url)
print(page_content)
三、使用XPath抓取商品信息
获取到页面内容后,我们可以利用xpath库的XPath功能来进行商品信息的抓取。以下是一些基本的XPath语法以及示例代码:
1. 根据节点选择器抓取单个元素
from lxml import etree
tree = etree.HTML(page_content)
title = tree.xpath('//h1[@class="title"]/text()')[0]
print(title)
2. 根据节点选择器抓取多个元素
from lxml import etree
tree = etree.HTML(page_content)
prices = tree.xpath('//span[@class="price"]/text()')
for price in prices:
print(price)
3. 根据属性选择器抓取元素
from lxml import etree
tree = etree.HTML(page_content)
img_url = tree.xpath('//img[@src="https://example.com/img.jpg"]/@alt')[0]
print(img_url)
四、完整示例代码
下面是一个完整的示例代码,展示了如何利用XPath抓取京东网商品信息:
import requests
from lxml import etree
def get_page_content(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.text
else:
return None
def parse_page_content(page_content):
tree = etree.HTML(page_content)
titles = tree.xpath('//h3[@class="p-name"]/a/@title')
prices = tree.xpath('//div[@class="p-price"]/strong/i/text()')
for title, price in zip(titles, prices):
print('商品标题:', title)
print('商品价格:', price)
url = 'https://www.jd.com'
page_content = get_page_content(url)
parse_page_content(page_content)
以上就是利用XPath抓取京东网商品信息的方法和示例代码,通过XPath的选择器和语法,可以方便地实现对指定节点的抓取和提取所需信息。
猜您想看
-
如何添加Lombok支持和使用Thymeleaf
1.添加Lom...
2023年05月26日 -
redis中性能优化常用方法有哪些
1. 合理使用...
2023年05月26日 -
MySQL总结及优化建议
MySQL是一...
2023年05月05日 -
在CS:GO中无法联机,怎么办?
CS:GO无法...
2023年04月17日 -
LeetCode如何找出链表中环的入口节点
一、链表中环的...
2023年05月26日 -
如何使用iCloud存储数据并在多个iOS设备之间共享
如何使用iCl...
2023年05月05日