博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
爬虫实战(1)
阅读量:5361 次
发布时间:2019-06-15

本文共 2133 字,大约阅读时间需要 7 分钟。

看完了BeautifulSoup的官方文档, 今天试着爬了一波自家学校moodle, 写了一个简陋查分器, 还算是成功, 代码已经扔在github上了, 感兴趣的朋友可以去看看.        

 

今天模仿大神xlzd, 准备先写一个爬取豆瓣电影top250, 主要也是想看看反爬虫的机制, 毕竟不是每个网站都像我们学校的官网这样, 爬虫随进随出...

因为目前我还有没有看过requests这个库的官方文档, 所以有现在暂且是有一个知识点记一个知识点吧...

import requestshomePageResponse = requests.get("https://movie.douban.com/")print(type(homePageResponse.content))print(type(homePageResponse.text))---------------------------------------------------------------/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/zhangzhimin/PycharmProjects/PythonAgain/test2.py
Process finished with exit code 0

这是.content和.text的区别, 那么这里有个知识是, 在py3中, bytes解码(decode())会变成str, str编码会变成bytes(encode)...

所以总的来说.content.decode()就相当于.text...

按照大神的思路, 剧本应该是这样的 :

403 Forbidden

403 Forbidden


dae

产生403的原因,一般可能是因为需要登录的网站没有登录或者被服务器认为是爬虫而拒绝访问,这里很显然属于第二种情况。一般,浏览器在向服务器发送请求的时候,会有一个请求头——User-Agent,它用来标识浏览器的类型.当我们使用requests来发送请求的时候,默认的User-Agent是python-requests/2.8.1(后面的数字可能不同,表示版本号)。那么,我们试试看如果将User-Agent伪装成浏览器的,会不会解决这个问题呢?

然后遗憾的是, 并没有出现大神所谓的403, 这让我很尴尬... 不过还是耐着性子继续爬吧..

我先假装我的网页出了403(其实我发现我不加头也完美爬取了), 然后我们来给自己的爬虫User-Agent吧...

 

我随便找个一个网站, 打开检查之后, 刷新了一下... 可以看到最后一行就是我们需要的UA...

最后的代码如下...

1 import requests 2 from bs4 import BeautifulSoup 3  4  5 def pageCheck(url, headers): 6     homePageResponse = requests.get(url, headers=headers) 7     homePageSoup = BeautifulSoup(homePageResponse.content, 'lxml') 8     for li in homePageSoup.find("ol", class_ = "grid_view").find_all("li"): 9         link = li.find("div", class_ = "hd").a10         print(link.span.string + " : " + link['href'])11 12 13 url = "https://movie.douban.com/top250"14 start = 2515 headers = {16     'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) \17     AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36'18 }19 for cnt in range(0, 10):20     print("\n\nThis is page " + str(cnt+1) + " ...\n\n")21     if cnt == 0:22         curUrl = url23     else:24         curUrl = url + "?start=" + str(start * cnt) + "&filter"25     pageCheck(curUrl, headers)

转载于:https://www.cnblogs.com/nzhl/p/5595455.html

你可能感兴趣的文章
response和request
查看>>
【转】在Eclipse中安装和使用TFS插件
查看>>
回到顶部浮窗设计
查看>>
C#中Monitor和Lock以及区别
查看>>
【NOIP2017】奶酪
查看>>
$ 一步一步学Matlab(3)——Matlab中的数据类型
查看>>
5.6.3.7 localeCompare() 方法
查看>>
Linux下好用的简单实用命令
查看>>
描绘应用程序级的信息
查看>>
poj2406-Power Strings
查看>>
php环境搭建脚本
查看>>
FTP主动模式与被动模式说明
查看>>
php 编译常见错误
查看>>
MES架构
查看>>
【Python3 爬虫】15_Fiddler抓包分析
查看>>
高性能JavaScript-JS脚本加载与执行对性能的影响
查看>>
关于标签之间因为换行等问题造成的空白间距问题处理
查看>>
hdu 2767(tarjan)
查看>>
sklearn之分类模型混淆矩阵和分类报告
查看>>
MySQL各存储引擎
查看>>