数据分析实战(8-10)-数据采集简介⼋⽖鱼采集⼯具python爬
⾍
08 数据采集:如何⾃动化采集数据?
重点介绍爬⾍做抓取
1.Python 爬⾍
三角函数公式大全及记忆口诀1)使⽤ Requests 爬取内容。我们可以使⽤ Requests 库来抓取⽹页信息。Requests 库可以说是 Python 爬⾍的利器,也就是 Python 的HTTP 库,通过这个库爬取⽹页中的数据,⾮常⽅便,可以帮我们节约⼤量的时间。
2)使⽤ XPath 解析内容。XPath 是 XML Path 的缩写,也就是 XML 路径语⾔。它是⼀种⽤来确定 XML ⽂档中某部分位置的语⾔,在开发中经常⽤来当作⼩型查询语⾔。XPath 可以通过元素和属性进⾏位置索引。
3)使⽤ Pandas 保存数据。Pandas 是让数据分析⼯作变得更加简单的⾼级数据结构,我们可以⽤ Pandas 保存爬取的数据。最后通过Pandas 再写⼊到 XLS 或者 MySQL 等数据库中。Requests、XPath、Pandas 是 Python 的三个利器。当然做 Python 爬⾍还有很多利器,⽐如 Selenium,PhantomJS,或者⽤ Puppeteer 这种⽆头模式。##这⾥可以实践⼀下
2.抓取⼯具
1)
2)
3)集搜客
09 数据采集:如何⽤⼋⽖鱼采集微博上的“D&G”评论
⼋⽖鱼傻⽠软件,操作⾮常⽅便,⽐python爬⾍更容易上⼿⽤
10 Python爬⾍:如何⾃动化下载王祖贤海报?
mysql case whenpython爬⾍笔记中介绍了⽤urlretrieve可以下载xpath的⾮结构化数据,参考:
这篇教程是从JSON和Xpath来介绍补充
如何使⽤ JSON 数据⾃动下载王祖贤的海报
{"images":
python请求并解析json数据[{"src": …, "author": …, "url":…, "id": …, "title": …, "width":…, "height":…},
…
{"src": …, "author": …, "url":…, "id": …, "title": …, "width":…, "height":…}],
"total":26069,"limit":20,"more":true}
不如先⽤第⼀个页⾯上⼿来个下载⼩例⼦:
# -*- coding: utf-8 -*
import requests
import json
query = '王祖贤'
url = 'www.douban/j/search_photo?q=' + 'query' + '&limit=20&start=0'
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/69.0.3497.81 Safari/537.36 Maxthon/5.3.8.2000 "
}
html = (url, headers=headers).text # 得到返回结果,是⼀个json格式
response = json.loads(html, encoding='utf-8') # 将 JSON 格式转换成 Python 对象
i=0
for image in response['images']:
print(i)
img_src = image['src'] #image是⼀个dict
pic = (img_src, timeout=10) #这时候image其实是动态页⾯ XHR 数据。还需要再请求对应的url
filename='C:/Users/.../image_json_test/'+str(i)+'.jpg'
fp=open(filename,'wb') #'b⼀般处理⾮结构化如图⽚,wb有⽂件则覆盖,⽆⽂件则新增'
fp.t) #注意这⾥content
fp.close()
i+=1
gainsbourg是什么意思这⾥我们只爬取了20张图⽚,从上⾯的json串:"total":26069,"limit":20,"more":true我们知道总数量26069,每20张分页,要爬取更多,我们可以将图⽚download写成幻术,控制url翻页循环:
import requests
import json
query = '王祖贤'
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/69.0.3497.81 Safari/537.36 Maxthon/5.3.8.2000 "
}
def download(src, id): # 图⽚下载函数
update语句怎么更新多条数据filename = 'C:/Users/luxia/PycharmProjects/shujuyunying/image_json_test/' + str(id) + '.jpg'
try:
pic = (src, timeout=10)
redis重启命令f = open(filename, 'wb')
f.t)
f.close()
ptions.ConnectionError:
print('图⽚⽆法下载')
''' for 循环请求全部的 url '''
for i in range(20, 26069, 20):
url = 'www.douban/j/search_photo?q=' + query + '&limit=20&start=' + str(i)
html = (url, headers=headers).text # 得到返回结果
response = json.loads(html, encoding='utf-8') # 将 JSON 格式转换成 Python 对象
for image in response['images']:
img_src = image['src'] # 当前下载的图⽚⽹址
download(img_src, image['id']) # 下载⼀张图⽚
如何使⽤ XPath ⾃动下载王祖贤的电影海报封⾯
JSON 的数据格式数据结构很清爽,通过 Python 的 JSON 库就可以解析。
但有时候,⽹页会⽤ JS 请求数据,那么只有 JS 都加载完之后,我们才能获取完整的 HTML ⽂件。XPath 可以不受加载的限制,帮我们定位想要的元素。
讲义中推荐使⽤XPath Helper 插件获取Xpath路径,其中在浏览器中可以⽤f12开启开发者模式点选页⾯元素查看xpath,在HTML中右键也可以复制粘贴xpath路径,具体可以参考爬⾍相关的博⽂。
有时候当我们直接⽤ Requests 获取 HTML 的时候,发现想要的 XPath 并不存在。这是因为 HTML 还没有加载完,因此你需要⼀个⼯具,来进⾏⽹页加载的模拟,直到完成加载后再给你完整的 HTML。在 Python 中,这个⼯具就是 Selenium 库(这⾥暂时不涉及)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论