关于这篇文章有几句话想说,首先给大家道歉,之前学的时候真的觉得下述的是比较厉害的东西,但是后来发现真的是基础中的基础,内容还不是很完全。再看一遍自己写的这篇文章,突然有种想自杀的冲动。emmm所以楼主决定本文全文抹掉重写一遍,并且为之前点进来看的七十多访问量的人,致以最诚挚的歉意。好想死。。
在学完了爬虫全部内容后,楼主觉得勉强有资格为接触爬虫的新人指指路了。那么废话不多说,以下正文:
一、获取内容
说爬虫一定要先说爬取内容的方法,python有这么几个支持爬虫的库,一个是urllib和它的后续版本库,这个库做爬取的时候生成的中继对象是比较多的,楼主也记不大住都有什么,而且这个库的使用在楼主看来有些过时了。更加建议做爬取的时候使用requests库(ps:不是request)
使用urllib:
html = urllib.request.urlopen(url).read()
使用requests:
r = requests.get(url)
对于获取到的内容,有以下方法进行处理:
1、使用正则表达式匹配。
2、使用BeautifulSoup对爬取内容标签对象化。
3、通过构造节点树使用Xpath获取元素。
第一种方法胜在直接,效率高而且不需要安装三方库。第二种方法胜在简单,标签对象化后不需要写复杂的正则表达式,而且提取标签更加方便。第三种方法胜在灵活,获取内容更加灵活,就是语法有点多,不熟的话可以对着Xpath语法文档写。
使用正则表达式匹配:
pattern_content = '<div class="rich_media_content " id="js_content">(.*?)</div>'content1 = re.findall(pattern_content, html, re.S)
使用BeautifulSoup对爬取内容标签对象化:
soup = bs4.BeautifulSoup(html, 'lxml')imgs = soup.find_all('img')
关于BeautifulSoup的安装请自行百度,没记错的话直接pip是可行的。
通过构造节点树使用Xpath获取元素:
selector=etree.HTML(html)content=selector.xpath('//div[@id="content"]/ul[@id="ul"]/li/text()')
至此,爬取的基本内容就叙述完毕了,这里给出的是最简单的范例,如果想深入了解某种方法,建议去查询更详细的技术文档。
下面内容就是之前的了,略作删改。
二、伪造表单请求头
很多网站上的数据爬取比较简单,只需要直接request那个网址就可以,很多小型网站都是这样。面对这样的网站数据,只需要花个几分钟随便写几行代码,就能爬到我们想要的数据。
但是想要爬取稍微大型一些的网站数据,就不会这么容易了。这些网站的服务器,会分析收到的每一条request,来判断该请求是否为用户操作。这种技术,我们把它称为反爬技术。常见的反爬技术,楼主知道的有上面所述的分析请求,还有验证码技术。对于这两种情况,我们在构造爬虫程序的时候就需要稍微费点力气了。
新闻热点
疑难解答