前言
大致熟悉了python的基础语法以后,开始学习爬虫基础。
一、爬取前的准备工作
python3.7环境(只要是python3版本都可以);
依赖包 : time requests re (缺少包的话,直接命令行中 pip install + 包名 下载);
python编辑器,本人使用pycharm(能编辑运行python程序即可)。
二、分析爬取网站并爬取
- 观察所要爬取网站信息
(1) 打开小姐姐网站,点击鼠标右键,检查,此时进入开发者模式,点击开发者窗口中的 network ,重新刷新界面,然后在下面的 Name 一栏中点击我们的第一个网址,在右边的 Header 中可以看到我们访问的信息。我们找到 Request Headers 中的 cookie 和User-Agent,我们保存下来。
我们观察可以发现图片元素包含在一个 a 标签中,而我们想要的图片路径就是a 标签中的 href 属性。
我们把鼠标移动到href属性中的路径上停留几秒钟可以发现图片的完整路径(是不是很神奇呀!)。我们保存一下这个完整路径。
经过以上对图片网站的分析,接下来我们就可以顺利的编代码啦。
2. 爬取完整代码
代码如下(示例):
[Python] 纯文本查看 复制代码
import time
import requests
import re
[mw_shl_code=python,true]def get_Data(base_url):
Rheaders = {
这里需要爬取网站首页的cookie。(没有cookie图片可能会出错,用自己的cookie)
"cookie": "__cfduid=d5411884fe8db207f3f03481febfe233e1598005261; __gads=ID=7a29c02809efefed:T=1598005261:S=ALNI_MZ6fuEEp6EyyCZwFhe5REJdwC5IsQ; _ga=GA1.2.1470230754.1598005306; _gid=GA1.2.1918223717.1598005307; Hm_lvt_a5eba7a40c339f057e1c5b5ac4ab4cc9=1597913712,1598001373,1598005230,1598007422; _GPSLSC=; xcat_sign_cookie=2097c21e431a2a007b125e4fc599a50c; Hm_lpvt_a5eba7a40c339f057e1c5b5ac4ab4cc9=1598008115",
# "cookie":"__cfduid=d5411884fe8db207f3f03481febfe233e1598005261; Hm_lvt_a5eba7a40c339f057e1c5b5ac4ab4cc9=1597396642,1597913712,1598001373,1598005230; __gads=ID=7a29c02809efefed:T=1598005261:S=ALNI_MZ6fuEEp6EyyCZwFhe5REJdwC5IsQ; _GPSLSC=; xcat_sign_cookie=2097c21e431a2a007b125e4fc599a50c; _ga=GA1.2.1470230754.1598005306; _gid=GA1.2.1918223717.1598005307; Hm_lpvt_a5eba7a40c339f057e1c5b5ac4ab4cc9=1598006751; _gat_gtag_UA_127463675_2=1",
# 设置代{过}{滤}理,伪装成浏览器。
"user-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"
}
[Python] 纯文本查看 复制代码
response = requests.get(base_url,headers = Rheaders)
response.encoding = 'utf-8'
html = response.text
print(html)
image_urls = re.findall('<a href="(.*?)" alt=".*?" title=".*?">', html)
#print(image_urls)
return image_urls
[Python] 纯文本查看 复制代码
def save_Data(image_urls):
Rheaders = {
"cookie":"cfduid=d5411884fe8db207f3f03481febfe233e1598005261; gads=ID=7a29c02809efefed:T=1598005261:S=ALNI_MZ6fuEEp6EyyCZwFhe5REJdwC5IsQ; _ga=GA1.2.1470230754.1598005306; _gid=GA1.2.1918223717.1598005307; Hm_lvt_a5eba7a40c339f057e1c5b5ac4ab4cc9=1597913712,1598001373,1598005230,1598007422; _GPSLSC=; xcat_sign_cookie=2097c21e431a2a007b125e4fc599a50c; Hm_lpvt_a5eba7a40c339f057e1c5b5ac4ab4cc9=1598008115",
"cookie":"cfduid=d5411884fe8db207f3f03481febfe233e1598005261; Hm_lvt_a5eba7a40c339f057e1c5b5ac4ab4cc9=1597396642,1597913712,1598001373,1598005230; gads=ID=7a29c02809efefed:T=1598005261:S=ALNI_MZ6fuEEp6EyyCZwFhe5REJdwC5IsQ; _GPSLSC=; xcat_sign_cookie=2097c21e431a2a007b125e4fc599a50c; _ga=GA1.2.1470230754.1598005306; _gid=GA1.2.1918223717.1598005307; Hm_lpvt_a5eba7a40c339f057e1c5b5ac4ab4cc9=1598006751; _gat_gtag_UA_127463675_2=1",
"user-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"
}
path = 'https://www.vmgirls.com/'
##爬取图片开始
[Python] 纯文本查看 复制代码
print("Begin >> >> >>")
for url in image_urls:
time.sleep(3)
image_name = url.split('/')[-1]
print(image_name)
response = requests.get(path + url,headers=Rheaders)
# 这里的images3需要亲们手动建立在同级目录下
with open('./images3/' + image_name,'wb') as f:
f.write(response.content)
print("<< << << Finish")
"if name == 'main':"
"if name == 'main':"
网址为你想要爬取的页面(注意:必须为五个数的页面,比如:14012.html)
save_Data(get_Data('https://www.vmgirls.com/14012.html'))
#get_Data('https://www.vmgirls.com/12985.html')
[/mw_shl_code]
这是我爬取下来的小姐姐图片,大家若是有什么疑问,欢迎评论,随时回复,也可以一起交流学习,共同进步。
[b]
总结
- 在爬取前,一定要分析网页结构;
- 在代码上要注意设置user-agent 和 cookie,可以防止爬取出问题哦;
- 代码实现比较粗糙,以后会多多改进,使代码整洁,减少代码冗余,使代码高效执行。
源代码在最后面