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获取网页数据相关推荐

  1. 21天Python学习——lxml库与Xpath提取网页数据

    ​ ​ 活动地址:CSDN21天学习挑战赛 一.爬虫提取网页数据的流程图 图源:100天精通Python(爬虫篇)--第45天:lxml库与Xpath提取网页数据_无 羡ღ的博客-CSDN博客_pyt ...

  2. python Chrome + selenium自动化测试与python爬虫获取网页数据

    一.使用Python+selenium+Chrome 报错: selenium.common.exceptions.SessionNotCreatedException: Message: sessi ...

  3. 数据采集—XPath抽取网页数据

    XPath抽取网页数据 XML 是什么 可扩展标记语言 用来传输和存储数据 用途 XHTML 用于描述可用的web服务的WSDL 作为手持设备的标记语言的WAP和WML 用于新闻feed的RSS语言 ...

  4. 21天学习挑战赛——Python爬虫 lxml库与Xpath提取网页数据

    目录 ​1. 爬虫提取网页数据流程图 2. lxml库 2.1 解析HTML网页 3. Xpath 3.1 选取节点 3.2 谓语 3.3 选取未知节点 3.4 选取若干元素 4. Xpath实战 4 ...

  5. python获取网页数据对电脑性能_【Python】网页数据爬取实战

    由于网页结构跟之前有变化,还不是很熟悉.代码待完善,问题记录: 腾讯新闻二级网页内容爬取有问题. 链家网站头文件没有用到. 爬取一条腾讯视频的header内容,存入txt.要求: 包含网页链接 包含t ...

  6. java 网页数据_JAVA获取网页数据

    很多时候用到抓取网页数据的功能,以前工作中曾经用到过,今天总结了一下: 1.抓取网页数据通过指定的URL,获得页面信息,进而对页面用DOM进行 NODE分析,处理得到原始HTML数据,这样做的优势在于 ...

  7. python获取网页数据后写入mysql_HTTP协议与使用Python获取数据并写入MySQL

    一.Http协议 二.Https协议 三.使用Python获取数据 (1)urlib (2)GET请求 (3)POST请求 四.爬取豆瓣电影实战 1.思路 (1)在浏览器中输入https://movi ...

  8. php抓取网页内容,获取网页数据

    php通过simple_html_dom实现抓取网页内容,获取核心网页数据,将网页数据写入本地 xxx.json 文件 其代码实现逻辑: 1. 引入simple_html_dom.php文件 requ ...

  9. Python控制本地浏览器并获取网页数据

    1.前言 在自动化办公中,我们经常需要利用爬虫技能去批量获取网页的数据,但是有时候我们在利用爬虫的时候,会遇到一个问题,就是登录的时候要携带参数,不如账号.密码.其他的加密信息 就好比我现在公司,好多 ...

最新文章

  1. 干货丨机器学习新手一定要掌握的10大算法
  2. phpstudy2018升级MySQL5.5为5.7.24教程(图文)
  3. Python数值类型:小数与百分数的转换
  4. 35 岁之前不应该错过的 30 本书
  5. 清华90后博士后万蕊雪:科研这场马拉松,我会一直跑下去
  6. python语言的单行注释以井号开头_【学习】Python语言入门
  7. vscode中如何修改vetur配置_vscode vetur插件配置不换行
  8. 通过 mpu6050加速度计算角度
  9. Android 对ListView和RecyclerView的两个BaseAdapter封装分享
  10. 计算机汉字录入试题,计算机等考试一级B上机试题——汉字录入题
  11. java中strictfp么意思_java中的strictfp的作用
  12. Python 爬虫下载图片两种方法
  13. 广州出生婴儿登记入户程序
  14. “宝万之争”惊动三会 300亿资金如何越过监管边界
  15. Square, Inc.宣布拟收购Tidal多数股权
  16. H.266/VVC技术学习之帧内模式编码
  17. Spring Cloud Nacos整合 Seata 实现分布式事务
  18. 种类丰富的材质库,让开发者建模轻松高效
  19. 农产品直销平台/农场品销售系统
  20. watch、computed、methods的区别

热门文章

  1. 简单的小程序实现ATM机操作
  2. Hbase写入量大导致region过大无法split问题
  3. [转]IE下对文件(图片)进行base64转换
  4. JS动态添加多个事件
  5. 杭电多校(二)2019.7.24--暑假集训
  6. Linux之nginx入门
  7. C#实现发送手机短信
  8. C#学习系列之泛型类
  9. SQL查询库、表,列等的一些操作
  10. python推荐淘宝物美价廉商品 2.0