Python中Agent()类的网络爬虫应用实践
发布时间:2023-12-23 00:08:58
Agent()类是Python中一个非常强大的网络爬虫工具,它可以模拟浏览器的功能,发送HTTP请求并解析响应数据。Agent()类的网络爬虫应用非常广泛,下面将以一个实际的使用例子来介绍Agent()类的使用方法。
假设我们需要爬取某个电商网站中的商品信息,并保存到本地文件中。首先,我们需要确定爬取的网址,以及需要爬取的内容。这里以京东商城的某个商品列表页为例,我们需要爬取商品的名称、价格和评价数量。
首先,我们需要导入必要的包:
from lxml import etree import requests import csv
接下来,我们定义一个名为JDSpider的类,用来实现爬虫功能:
class JDSpider:
def __init__(self):
self.url = 'https://list.jd.com/list.html?cat=670%2C671%2C672' # 需要爬取的商品列表页URL
self.headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0;Win64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
self.filename = 'jd_goods.csv' # 保存爬取结果的文件名
def get_data(self):
# 发送HTTP请求获取HTML页面数据
response = requests.get(self.url, headers=self.headers)
html = response.text
# 使用XPath解析HTML页面
tree = etree.HTML(html)
goods_list = tree.xpath('//ul[@class="gl-warp clearfix"]/li')
# 遍历商品列表,提取名称、价格和评价数量
data = []
for goods in goods_list:
name = goods.xpath('.//div[@class="p-name"]/a/em/text()')[0]
price = goods.xpath('.//div[@class="p-price"]/strong/i/text()')[0]
comment = goods.xpath('.//div[@class="p-commit"]/strong/a/text()')[0]
data.append([name, price, comment])
return data
def save_data(self, data):
# 保存数据到本地文件
with open(self.filename, 'a', encoding='utf-8', newline='') as f:
writer = csv.writer(f)
writer.writerows(data)
def run(self):
data = self.get_data()
self.save_data(data)
以上代码中,我们定义了一个JDSpider类,包含了三个方法:
- __init__()方法初始化了需要爬取的URL、请求头和保存结果的文件名。
- get_data()方法发送HTTP请求获取HTML页面数据,并使用XPath解析HTML页面,提取商品的名称、价格和评价数量。
- save_data()方法将爬取的数据保存到本地文件中,使用csv.writer写入CSV文件。
最后,我们创建一个Spider实例,并调用run()方法来启动爬虫:
spider = JDSpider() spider.run()
通过以上代码,我们就可以实现对京东商城商品列表的爬取,并将爬取结果保存到本地文件中。我们可以通过修改URL和XPath表达式,来爬取其他的电商网站或不同的商品分类。
需要注意的是,Agent()类的使用需要遵守网站的相关规定和法律法规,不得进行恶意爬取或非法操作,以免触犯相关法律。
