写到最前面哈:
现在,网上的、书上的各种爬虫教程比比皆是。但是,大家千万不要纠结到底哪个资源更好。
作为一个小白,建议大家把几个老师都看看,毕竟爬虫的方法有很多种。到时,写爬虫的时候,想起哪种就用哪种。
笔者作为一个小白,第一次自己写爬虫,写得不好,望见谅。
当然代码一定原创。
这是在鼓励我自己,也是提供给和我一样的同学一个爬虫思路。
对于新手而言,爬虫为什么那么难?就是因为对于初学者不太了解正则表达式。
笔者第一次写的过程,写的方法简单但是啰嗦那种,用正则用的比较少。
其实,写完之后,才发现第一次写的虽然麻烦,但是能让自己更好地理解一些基本函数的作用。
还有,爬虫是一个不断测试的过程,所以一定多print几次。
笔者将整个爬虫看成烹饪,在过程中多用print()方法就像不断品尝汤的味道,及时调整。
一、首先,先导入我们需要的库。
import requests
import re
from bs4 import BeautifulSoup
requests 与 BeautifulSoup的关系,应该是食材与食谱的关系:先是获取能够做菜的食材,
才能按照食谱做出饭菜。
这时又出现了正则表达式re,这儿就相当于一套非常好用的厨具。你没有厨具,光靠是食材和
食谱,可以做出美味的食物,但是过程会曲折一点。
二、爬虫的前提,就必须要有“食材”。这个时候就要我们发送“请求”,然后收到“食材”。
kv = {'User-Agent': 'Mozilla/5.0'}
r = requests.get('https://movie.douban.com/top250?start=0', headers = kv)
这里需要注意的是我们用request请求时,会发给远方服务器一个请求表头。
但有些网站会反爬虫,其中一种反爬虫最简单的方法,就是识别请求信息的头。
如果我们不更改表头,将会是:
可以很明显看出,'User-Agent': 'python-requests/2.18.4',反爬虫的网站只要识别出
requests的表头,将会禁止你的爬虫。
解决方法,我们自己更改请求的表头,用参数headers,将会是:
三、收到“食材”,我们便开始用BeautifulSoup进行简单处理,比如,洗菜。。。
1、这个时候,r只是服务器返给我们一个信号,我们要使用其中的信息,必须要用r.txt将其展现出来。
注意,这里demo = r.txt是还没有处理过的食材,而正则表达式处理的最好是最原始的食材,
所以如果用正则,要变里的文本选取最好是未经BeautifulSoup处理过的demo。
如果经过BeautifulSoup处理过的食材,再用正则表达式,会出现小问题,下面我会提到。
笔者,第一次写是很少用正则,这样的好处是更好的理解整个爬虫,毕竟正则太简单了哈哈哈
import requests
import re
from bs4 import BeautifulSoup
kv = {'User-Agent': 'Mozilla/5.0'}
r = requests.get('https://movie.douban.com/top250?start=0', headers = kv)