当前位置: 移动技术网 > IT编程>脚本编程>Python > 爬虫超级简单入门

爬虫超级简单入门

2019年10月20日  | 移动技术网IT编程  | 我要评论

前两天看到 某个程序猿写了个爬虫,然后公司200多人被端, 作为在入门python 的小白, 产生了兴趣,于是乎学习了下,写了一个小爬虫,做一些入门的抓爬,爬点美女图片吧 !

let's do it

 

 

 看一眼美女,写代码的兴致就上来了

爬虫是通过找到要爬的图片的url 然后进行下载, 这个url怎么找呢?

写过网页的应该都知道, 但是我没写过,我们打开网页后按f12弹出调试工具

 

 选择network,在左侧选择一个有request headers 的

然后可以看到有 referer, 字面意思是引用, 在此处是用来防止跨域请求,(我的理解是只能通过该网页,来获取左侧选择的文件 也就是这个页面上的元素),一会我们的请求头要用到

user-agent: 用户代理,里面发现有chrome这个单词,猜测是浏览器,于是换个火狐试了下 里面有firefox, 这应该是浏览器代理  每个浏览器不同,我们用这个来伪装成浏览器访问

headers = {
    'referer':'https://www.85814.com/meinv/gaotiaomeinv/',
    'user-agent':'ozilla/5.0 (windows nt 10.0; wow64) applewebkit/537.36 (khtml, like gecko) chrome/59.0.3071.104 safari/537.36'
}

 

 我们把它放到一个字典中,因为后面类型要求是字典

接着用request库连接下网站

import requests
headers = {
    'referer':'https://www.85814.com/meinv/gaotiaomeinv/',
    'user-agent':'ozilla/5.0 (windows nt 10.0; wow64) applewebkit/537.36 (khtml, like gecko) chrome/59.0.3071.104 safari/537.36'
}

url = 'https://www.85814.com/meinv/gaotiaomeinv/'
resp = requests.get(url,headers=headers)
pass

 

 

 

可以看到 response 为 200  表示连接上了

 

很好

 

下一步我们就要获取图片的url了, 点击开发工具左上角的元素审查,然后点击一张图

 

 

 

 

可以看到,img 的alt属性对于图的标题, src就是图片的源地址,可以复制出来,在进入这个网站试试。

多试几个图片的话,知道 中间的大图数据组织方式是一样的, 我们可以通过一个路径匹配来查找所有的src

ctrl+f

 

 下面是一个匹配模式,.//p[@id="l"]   .//p会匹配当前页面下 所有p标签  这里用属性id ="i"限制, 找到主框, 然后双斜杠 在p[@id="l"]  下面匹配所有的img。 后面/@src 是获得所有的src 也就是url

上代码

from lxml import etree
html = etree.html(resp.text)
srcs = html.xpath('.//p[@id="l"]//img/@src')

 

得到的srcs是一个 list 只要遍历这个list 对每一个url 的图片进行download

for src in srcs:
    time.sleep(0.2)
    filename= src.split('/')[-1]
    img = requests.get(src, headers=headers,timeout=10,verify=false)
    with open( 'imgs/'+ filename,'wb') as file:
        file.write(img.content)

 

用到了time,用来延迟,防止请求过快被服务器认作受到攻击,之前本人就被一个网站封ip了,  还有很多其他方法, 比如 每次用不同的 user-agent伪装成不同的浏览器, 还有用代理ip, 之后会提到。

然后在当前目录创建imgs路径,  img.context是图片的内容。

 

 

 

存的是bytes 所以用'wb' 打开。

运行程序 在img下就有很多美女图片了

 

 

 

一个简单的爬虫就完成了。

学习尚浅,有错误或不当之处还请指正。

 

 


 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网