6、通过xpath获取网页数据
1、xpath解析网页源文件
from urllib import request from lxml import etree # 请求的url url = "http://www.dfenqi.cn/Product/Index" # 请求的头文件 headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36" } # 创建请求对象 req = request.Request(url,headers = headers) # 创建处理器对象 httpHandler = request.HTTPHandler() # 创建opener opener = request.build_opener(httpHandler) # 发送请求 response = opener.open(req) # 读取源文件 html = response.read().decode('utf-8') # 创建xpath关系 xpath = "//div[@class='liebiao']/ul/li/p/text()" # 获取属性值列表 # xpath = "//div[@class='liebiao']/ul/li/p/@class" # 将html转换成可解析对象 selector = etree.HTML(html) # 返回xpath查询列表 goodsList = selector.xpath(xpath) # 显示商品标题 for goods in goodsList:print(goods)
2、xpath解析源文件,并下载图片至本地
from urllib import request from lxml import etree import osclass Spilder():def __init__(self,pageUrl):# 需要爬取网页的urlself.pageUrl = pageUrl# 请求头文件self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36"}# 请求的处理器self.httpHandler = request.HTTPHandler()# 请求的openerself.opener = request.build_opener(self.httpHandler)def loadPage(self):''' 请求网页 :return: 返回网页源文件 '''req = request.Request(self.pageUrl,headers = self.headers)response = self.opener.open(req)return response.read()def getImageUrls(self,html,xpath):''' 根据xpath解析源文件 :param html: 源文件 :param xpath: xpath解析字符串 :return: 解析列表 '''selector = etree.HTML(html)imgUrls = selector.xpath(xpath)return imgUrlsdef loadImage(self,url):''' 下载图片 :param url: 图片url :return: 返回图片数据 '''req = request.Request(url,headers=self.headers)response = self.opener.open(req)return response.read()def writeImage(self,img,imgName):''' 在当前文件夹下面创建image子文件夹,将图片写入本地, :param img: 图片数据 :param imgName: 图片名称 :return: '''folderName = os.path.join(os.path.abspath(os.curdir),"image")if not(os.path.isdir(folderName)):os.mkdir(folderName)with open('image/%s' % imgName,'wb') as f:f.write(img)if __name__ == "__main__":url = "http://www.dfenqi.cn/Product/Index"spilder = Spilder(url)html = spilder.loadPage()xpath = "//div[@class='liebiao']/ul/li/div/a/img/@src"imgUrls = spilder.getImageUrls(html,xpath)index = 0for url in imgUrls:index += 1img = spilder.loadImage(url)spilder.writeImage(img,'img%s.jpg' % index)
转载于:https://www.cnblogs.com/toloy/p/8618007.html
6、通过xpath获取网页数据相关推荐
- 21天Python学习——lxml库与Xpath提取网页数据
活动地址:CSDN21天学习挑战赛 一.爬虫提取网页数据的流程图 图源:100天精通Python(爬虫篇)--第45天:lxml库与Xpath提取网页数据_无 羡ღ的博客-CSDN博客_pyt ...
- python Chrome + selenium自动化测试与python爬虫获取网页数据
一.使用Python+selenium+Chrome 报错: selenium.common.exceptions.SessionNotCreatedException: Message: sessi ...
- 数据采集—XPath抽取网页数据
XPath抽取网页数据 XML 是什么 可扩展标记语言 用来传输和存储数据 用途 XHTML 用于描述可用的web服务的WSDL 作为手持设备的标记语言的WAP和WML 用于新闻feed的RSS语言 ...
- 21天学习挑战赛——Python爬虫 lxml库与Xpath提取网页数据
目录 1. 爬虫提取网页数据流程图 2. lxml库 2.1 解析HTML网页 3. Xpath 3.1 选取节点 3.2 谓语 3.3 选取未知节点 3.4 选取若干元素 4. Xpath实战 4 ...
- python获取网页数据对电脑性能_【Python】网页数据爬取实战
由于网页结构跟之前有变化,还不是很熟悉.代码待完善,问题记录: 腾讯新闻二级网页内容爬取有问题. 链家网站头文件没有用到. 爬取一条腾讯视频的header内容,存入txt.要求: 包含网页链接 包含t ...
- java 网页数据_JAVA获取网页数据
很多时候用到抓取网页数据的功能,以前工作中曾经用到过,今天总结了一下: 1.抓取网页数据通过指定的URL,获得页面信息,进而对页面用DOM进行 NODE分析,处理得到原始HTML数据,这样做的优势在于 ...
- python获取网页数据后写入mysql_HTTP协议与使用Python获取数据并写入MySQL
一.Http协议 二.Https协议 三.使用Python获取数据 (1)urlib (2)GET请求 (3)POST请求 四.爬取豆瓣电影实战 1.思路 (1)在浏览器中输入https://movi ...
- php抓取网页内容,获取网页数据
php通过simple_html_dom实现抓取网页内容,获取核心网页数据,将网页数据写入本地 xxx.json 文件 其代码实现逻辑: 1. 引入simple_html_dom.php文件 requ ...
- Python控制本地浏览器并获取网页数据
1.前言 在自动化办公中,我们经常需要利用爬虫技能去批量获取网页的数据,但是有时候我们在利用爬虫的时候,会遇到一个问题,就是登录的时候要携带参数,不如账号.密码.其他的加密信息 就好比我现在公司,好多 ...
最新文章
- 干货丨机器学习新手一定要掌握的10大算法
- phpstudy2018升级MySQL5.5为5.7.24教程(图文)
- Python数值类型:小数与百分数的转换
- 35 岁之前不应该错过的 30 本书
- 清华90后博士后万蕊雪:科研这场马拉松,我会一直跑下去
- python语言的单行注释以井号开头_【学习】Python语言入门
- vscode中如何修改vetur配置_vscode vetur插件配置不换行
- 通过 mpu6050加速度计算角度
- Android 对ListView和RecyclerView的两个BaseAdapter封装分享
- 计算机汉字录入试题,计算机等考试一级B上机试题——汉字录入题
- java中strictfp么意思_java中的strictfp的作用
- Python 爬虫下载图片两种方法
- 广州出生婴儿登记入户程序
- “宝万之争”惊动三会 300亿资金如何越过监管边界
- Square, Inc.宣布拟收购Tidal多数股权
- H.266/VVC技术学习之帧内模式编码
- Spring Cloud Nacos整合 Seata 实现分布式事务
- 种类丰富的材质库,让开发者建模轻松高效
- 农产品直销平台/农场品销售系统
- watch、computed、methods的区别