爬虫超级简单入门

2019/10/20 01:17
阅读数 12

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

 

 

 

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

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

 

 

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部