欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

爬虫超级简单入门

程序员文章站 2022-11-06 17:50:43
前两天看到 某个程序猿写了个爬虫,然后公司200多人被端, 作为在入门python 的小白, 产生了兴趣,于是乎学习了下,写了一个小爬虫,做一些入门的抓爬,爬点美女图片吧 ! let's do it 看一眼美女,写代码的兴致就上来了 爬虫是通过找到要爬的图片的url 然后进行下载, 这个url怎么找 ......

前两天看到 某个程序猿写了个爬虫,然后公司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下就有很多美女图片了

 

爬虫超级简单入门

 

 

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

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