python爬虫:xpath
2018-01-19 10:18
316 查看
xpath学习网址:http://www.w3school.com.cn/xpath/index.asp
基础知识和实际操作存在一定差异,还在探索中,感觉使用xpath没比beatifulsoup快多少,可能是电脑问题
练习:
# -*- coding: utf-8 -*-
import requests
import urllib.request
from lxml import etree
import time
import random
#获取图片链接
def get_links(url):
links = []
wb_data = requests.get(url).text
#调用requests库,获取二进制的相应内容。注意,这里使用.text方法的话,下面的html解析会报错,大家可以试一下。这里涉及到.content和.text的区别了。简单说,如果是处理文字、链接等内容,建议使用.text,处理视频、音频、图片等二进制内容,建议使用.content。至于更详细的区别,就又可以写一篇文章了。
selector = etree.HTML(wb_data)
#使用lxml.html模块构建选择器,主要功能是将二进制的服务器相应内容response转化为可读取的元素树(element tree)。lxml中就有etree模块,是构建元素树用的。如果是将html字符串转化为可读取的元素树,就建议使用lxml.html.fromstring,毕竟这几个名字应该能大致说明功能了吧。
image_url = selector.xpath("//div[@class='grid-flex text-center js-entry-hover-actions']/a[last()-1]/@href")
#需要注意的是,xpath返回的结果都是序列
for img_url in image_url:
links.append(host + img_url)
# print(host + img_url)
time.sleep(random.randint(1,5))
return links
def save_imgs(link):
img_data = requests.get(link).content
selector = etree.HTML(img_data)
i = selector.xpath("//*[@id='content']/div[2]/div/div/div[1]/div[2]/div/div/div/div/div/div[1]/div/div[2]/a/img/@src")[0]
imagename = "%%" + i.spilt('/')[-2] + ".jpg"#填写文件地址
urllib.request.urlretrieve(i,imagename)
if __name__ == '__main__':
url = 'https://weheartit.com/search/entries?utf8=%E2%9C%93&ac=1&query=flowers'
host = 'https://weheartit.com'
for link in get_links(url):
print(link)
save_imgs(link)
#xpath地址没调出来,所以直接在浏览器上copy的,不知道为什么换了两个编译器才调出来,可能存在编码问题
基础知识和实际操作存在一定差异,还在探索中,感觉使用xpath没比beatifulsoup快多少,可能是电脑问题
练习:
# -*- coding: utf-8 -*-
import requests
import urllib.request
from lxml import etree
import time
import random
#获取图片链接
def get_links(url):
links = []
wb_data = requests.get(url).text
#调用requests库,获取二进制的相应内容。注意,这里使用.text方法的话,下面的html解析会报错,大家可以试一下。这里涉及到.content和.text的区别了。简单说,如果是处理文字、链接等内容,建议使用.text,处理视频、音频、图片等二进制内容,建议使用.content。至于更详细的区别,就又可以写一篇文章了。
selector = etree.HTML(wb_data)
#使用lxml.html模块构建选择器,主要功能是将二进制的服务器相应内容response转化为可读取的元素树(element tree)。lxml中就有etree模块,是构建元素树用的。如果是将html字符串转化为可读取的元素树,就建议使用lxml.html.fromstring,毕竟这几个名字应该能大致说明功能了吧。
image_url = selector.xpath("//div[@class='grid-flex text-center js-entry-hover-actions']/a[last()-1]/@href")
#需要注意的是,xpath返回的结果都是序列
for img_url in image_url:
links.append(host + img_url)
# print(host + img_url)
time.sleep(random.randint(1,5))
return links
def save_imgs(link):
img_data = requests.get(link).content
selector = etree.HTML(img_data)
i = selector.xpath("//*[@id='content']/div[2]/div/div/div[1]/div[2]/div/div/div/div/div/div[1]/div/div[2]/a/img/@src")[0]
imagename = "%%" + i.spilt('/')[-2] + ".jpg"#填写文件地址
urllib.request.urlretrieve(i,imagename)
if __name__ == '__main__':
url = 'https://weheartit.com/search/entries?utf8=%E2%9C%93&ac=1&query=flowers'
host = 'https://weheartit.com'
for link in get_links(url):
print(link)
save_imgs(link)
#xpath地址没调出来,所以直接在浏览器上copy的,不知道为什么换了两个编译器才调出来,可能存在编码问题
相关文章推荐
- python3[爬虫实战] 使用selenium,xpath爬取京东手机(上)
- 芝麻HTTP:Python爬虫利器之Xpath语法与lxml库的用法
- Python爬虫学习笔记(3)-XPath与多线程爬虫
- Python--通过XPath实现网络爬虫
- Python爬虫利器三之Xpath语法与lxml库的用法
- python 爬虫(xpath解析网页,下载照片)
- Python爬虫利器三之Xpath语法与lxml库的用法
- python3[爬虫实战] 使用selenium,xpath爬取京东手机(下)
- Python爬虫——web前端基础XPath、Json和HTTP
- Python爬虫:Xpath语法笔记
- python爬虫关于xpath
- python静态网页爬虫之xpath(简单的博客更新提醒功能)
- Python爬虫:Xpath语法笔记
- Python爬虫:Xpath语法笔记
- 【python爬虫】scrapy框架笔记(一):创建工程,使用scrapy shell,xpath
- 第三百三十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—Scrapy启动文件的配置—xpath表达式
- python+beautifulsoup/xpath实现新浪微博某互粉好友全部好友圈微博爬虫
- python爬虫--利用xpath爬取图片(虚拟机ubuntu16.04)
- python爬虫利器-xpath使用