开篇寄语
前面的两篇文章,算是初步了解了Python爬虫,使用BeautifulSoup,具体可以参看下方的前情提要,而这次来演示一下一些网站无法通过之前的代码直接爬取,需要添加浏览器标识,且是一个特别高效的方法,这次以爬取豆瓣为例。
前情提要
官方库指导文档
内容详情
这次咱们安装一个新的库,名字叫做fake_useragent,伪装浏览器身份,常用于爬虫,可以生成各种浏览器标识。
pip install fake_useragent
安装完成后,在创建的编辑器新文件中就可以引入了,开头先引入这三个库:
from fake_useragent import UserAgent from bs4 import BeautifulSoup import requests
想爬取豆瓣电影的正在上映的电影,那么首先就需要确定这个区间在哪里,在编辑器输入以下代码进行查看:
from fake_useragent import UserAgent from bs4 import BeautifulSoup import requests ua = UserAgent() url = "https://movie.douban.com" headers = {"User-Agent":ua.random}#生成随机浏览器标识 req = requests.get(url,headers=headers) soup = BeautifulSoup(req.text, "html.parser") print(soup.prettify())
在调试中,可以发现上映的电影是在<li class="title"></li>这个标签内,只需要提取这个类中的文字即可。我们就可以这样写代码:
from fake_useragent import UserAgent from bs4 import BeautifulSoup import requests ua = UserAgent() url = "https://movie.douban.com" headers = {"User-Agent":ua.random}#生成随机浏览器标识 req = requests.get(url,headers=headers) soup = BeautifulSoup(req.text, "html.parser") for i in soup.select("li.title"): print(i.get_text())
就会得到所有上映的电影名称,但是会发现不太美观,那么可以替换文字中的回车键,只需要在结尾这样修改就可以了。
from fake_useragent import UserAgent from bs4 import BeautifulSoup import requests ua = UserAgent() url = "https://movie.douban.com" headers = {"User-Agent":ua.random}#生成随机浏览器标识 req = requests.get(url,headers=headers) soup = BeautifulSoup(req.text, "html.parser") for i in soup.select("li.title"): print(i.get_text().replace("\n",""))
效果如下图所示:
我们也就爬取到了正在上映的热门电影名称了。
完整列表如下:
吉祥如意 送你一朵小红... 蜂鸟计划 大红包 小伟 心灵奇旅 温泉屋的小老... 紧急救援 缉魂 拆弹专家2 移情高手 崖上的波妞 温暖的抱抱 许愿神龙 卸甲归来 武汉日夜 叱咤风云 神奇女侠19... 与我跳舞 指挥家 海底小纵队:... 幸运电梯 出手吧!女生... 疯狂原始人2... 棒!少年 没有过不去的... 隐形人 封口者 猎杀T34 魔法鼠乐园 天后小助理 哆啦A梦:大... 风来风去 爱遍全球 本命年 光语者 京北的我们 站直啰,别趴... 汪汪队立大功... 宝可梦:超梦... 话梦光影
当然,还可以举一反三,爬取每部电影更详细的资料,比如演员列表,年代等等之类的,这里就不做演示了,有兴趣的朋友可以试试。
ArrayArrayArray- 我的微信
- 微信扫一扫加好友
- 我的微信公众号
- 扫描关注公众号