requests和bs4的python爬虫入门


现在就简单的讲下这几个月的学习成果嘛~~~
爬虫其实爬的都是源代码,然后再通过对源代码进行过滤,得出我们想要的东西~
有时会需要一些正则的东西~
比如一些文本啊,图片的src啊,链接的href啊~~
这里面有一些lazyload的图片,就需要 selenium webdriver 什么的了,这个还没研究到哈,勿喷勿喷。

上面的答案也有提到过,用requests和bs4写爬虫真的是傻瓜爬虫系列。
就是很容易了~~ 但是无论写什么程序,都得把文档读一遍先,个人认为这俩个文档还是很友好的~
requests文档
快速上手 — Requests 2.10.0 文档
BeautifulSoup文档
Beautiful Soup 4.4.0 文档

首先引入这俩模块
from bs4 import BeautifulSoup
import requests

然后要给requests个url,告诉他我要爬取那个url的源码,假如就是这个问题的答案把
url = 'https://www.zhihu.com/question/20899988'
有时候还要伪装个header一起传给服务器,
User-Agent 就是浏览器版本,cookie就是本地终端上的数据
这两个开f12 的network 点doc 然后就应该能看得到了
headers = {
    'User-Agent':'',
    'Cookie':''
}
然后就可以用requests进行爬取了
data = requests.get(url, headers=headers)
其实这个data是个response 对象
需要.text一下再交给 bs4
soup = BeautifulSoup(data.text, 'lxml')

之后就能用soup.select 进行选择了,
要是不会写selector 最简单的方法,开f12 右键 copy > copy selector
例如我们写个简单的获取图片的。
imgs = soup.select('div.zm-editable-content > img')

这个soup.select 返回的是一个list,所以你要for in 循环一下
比如把它的link都放在一个list里
img_link = []
for i in imgs:
    img_link.append(i.get('data-actualsrc'))

那么,我知道了这些link有什么用啊~~下面我们就可以用urllib.urlretrieve来下载他们了啊!!
如果你爬被反爬的话,还可以 引入time 让程序睡一会
import time
time.sleep(4)

源代码就在这里啦~~
pythonSpider/4zhihuImgs.py at master · Yangzhedi/pythonSpider · GitHub

我的一个小python爬虫库,各种各样的,还在入门中~~不过欢迎star和issue哈~~
GitHub - Yangzhedi/pythonSpider: some python spiders with BeautifulSoup
star我~~我会维护好你们的时间线的~

你可能感兴趣的:(python)