爬虫---Beautiful Soup 爬取知乎热榜

  前两章简单的讲了Beautiful Soup的用法,在爬虫的过程中相信都遇到过一些反爬虫,如何跳过这些反爬虫呢?今天通过豆瓣网写一个简单的反爬中

什么是反爬虫

简单的说就是使用任何技术手段,阻止别人批量获取自己网站信息的一种方式。关键也在于批量。

反反爬虫机制

  • 增加请求头---headers为了模拟更真实的用户场景
  • 更改IP地址---网站会根据你的IP对网站访问频密,判断你是否属于爬虫
  • ua限制---UA是用户访问网站时候的浏览器标识,其反爬机制与ip限制类似
  • 模拟帐号登录----通过request模拟登录进行访问网站
  • cookies的限制---网站页面每次请求的cookies不同

爬取知乎热榜

1.首先打开需要爬取的网站

2.分析网站的html,标签为’a‘,属性为target="_blank"

3.通过request方式进行请求网站

4.首先我们先不携带任何的反反爬虫机制进行访问

# coding:utf-8
import requests
from  bs4 import BeautifulSoup
url = ‘https://www.zhihu.com/hot‘
html = requests.get(url,verify = False).content.decode(‘utf-8‘) # verify = False表示请求https
soup = BeautifulSoup(html,‘html.parser‘)
name = soup.find_all(‘a‘,target="_blank")
for i in name:
    print(i)

结果发现请求为空

5.从F12中提取出完整的请求头(也可以通过fiddler进行查看)

  • 请求地址的host
  • 请求的cookies
  • 请求的User-Agent
# coding:utf-8
import requests
from  bs4 import BeautifulSoup
url = ‘https://www.zhihu.com/hot‘
# 添加请求头
headers={
    "host":"www.zhihu.com",
    "cookie":‘_zap=482b5934-4878-4c78-84f9-893682c32b07; d_c0="ALCgSJhlsQ6PTpmYqrf51G‘
             ‘HhiwoTIQIlS1w=|1545203069"; _xsrf=XrStkKiqUlLxzwMIqRDc01J7jikO4xby; q_c1=94622‘
             ‘462a93a4238aafabad8c004bc41|1552532103000|1548396224000; __utma=51854390.1197068257.‘
             ‘1552532107.1552532107.1552532107.1; __utmz=51854390.1552532107.1.1.utmcsr=zhihu.com|utmccn=(r‘
             ‘eferral)|utmcmd=referral|utmcct=/; __utmv=51854390.100--|2=registration_date=20190314=1^3=entry_da‘
             ‘te=20190125=1; z_c0="2|1:0|10:1552535646|4:z_c0|92:Mi4xcFRlN0RnQUFBQUFBc0tCSW1HV3hEaVlBQUFCZ0FsVk5Ya‘
             ‘DUzWFFBWExTLXVpM3llZzhMb29QSmRtcjlKR3pRaTBB|03a1fa3d16c98e1688cdb5f6ba36082585d72af2f54597e370f05207‘
             ‘cd3a873f"; __gads=ID=27a40a1873146c19:T=1555320108:S=ALNI_MYb5D7sBKFhvJj32HBQXgrhyC6xxQ; tgw_l7_route=7‘
             ‘3af20938a97f63d9b695ad561c4c10c; tst=h; tshl=‘,
    "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36",
}
html = requests.get(url,headers=headers,verify = False).content.decode(‘utf-8‘) # verify = False表示请求https
soup = BeautifulSoup(html,‘html.parser‘)
name = soup.find_all(‘a‘,target="_blank")
for i in name:
    print(i.get_text())

执行后发现成功的把热榜下的一些信息请求出来

喜欢的小伙伴可以自己手动试一试。

原文地址:https://www.cnblogs.com/qican/p/11139899.html

时间: 2024-10-24 11:02:57

爬虫---Beautiful Soup 爬取知乎热榜的相关文章

爬取知乎热榜标题和连接 (python,requests,xpath)

用python爬取知乎的热榜,获取标题和链接. 环境和方法:ubantu16.04.python3.requests.xpath 1.用浏览器打开知乎,并登录 2.获取cookie和User-Agent 3.上代码 1 import requests 2 from lxml import etree 3 4 def get_html(url): 5 headers={ 6 'Cookie':'', 7 #'Host':'www.zhihu.com', 8 'User-Agent':'Mozill

Python3网络爬虫(七):使用Beautiful Soup爬取小说

转载请注明作者和出处:http://blog.csdn.net/c406495762 运行平台: Windows Python版本: Python3.x IDE: Sublime text3 一.Beautiful Soup简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.python式的函数用来处理导航.搜索.修改分析树等功能.它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简

详解Python 采用 requests + Beautiful Soup 爬取房天下新楼盘推荐

最近一直在关注Python写爬虫相关的知识,尝试了采用requests + Beautiful Soup来爬取房天下(原搜房网)的推荐新楼盘. 不用不知道,一用发现有惊喜也有惊吓,本文就一同记录下惊喜和踩的一些乱码的坑. 首先,觉得Beautiful soup解析网页更加符合人类的常规思维,比使用正则表达式(python中的re库)更容易理解. 同时关于requests遇到了中文字符和特殊字符解码的问题.本文都将给于深入的解说. 软件环境 Python    : 3.6.0 PyCharm: C

基于webmagic的爬虫小应用--爬取知乎用户信息

听到“爬虫”,是不是第一时间想到Python/php ? 多少想玩爬虫的Java学习者就因为语言不通而止步.Java是真的不能做爬虫吗? 当然不是. 只不过python的3行代码能解决的问题,而Java要30行. 这里推荐大家一个大牛做的java爬虫框架 [WebMagic] 文档简单易懂!java爬虫开发的福利啊! 一起来动手做一个小应用吧! 爬虫小应用–知乎用户信息 爬虫思想有3步 1. 抽取目标链接 2. 抽取需要的信息 3. 处理数据 一. 抽取目标链接 (确定入口地址,这里的入口是ht

爬虫---Beautiful Soup 爬取图片

上一篇简单的介绍Beautiful Soup 的基本用法,这一篇写下如何爬取网站上的图片,并保存下来 爬取图片 1.找到一个福利网站:http://www.xiaohuar.com/list-1-1.html 2.通过F12进行定位图片 3.通过下图可以看到标签为img,然后通过width="210"的属性 爬取方法 1.通过find_all()的方法进行查找图片位置 2.筛选出图片的URL和图片名称 3.筛选后会发现其中有一些图片URL不完整 4.这个时候需要在代码中加一个判断,如何

爬虫实战01——爬取猫眼电影top100榜单

#需求:抓取猫眼电影TOP100的电影名称.时间.评分.图片等信息,提取的结果会以文件的形式保存下来 import requests import time from lxml import etree import json import csv import codecs class MaoYanTop100Spider: #存储电影详情页的url film_page_url_list = [] #存储每个的电影信息 #film_info = {} film_info_list = [] #

Python爬虫爬取知乎小结

博客首发至Marcovaldo's blog (http://marcovaldong.github.io/) 最近学习了一点网络爬虫,并实现了使用python来爬取知乎的一些功能,这里做一个小的总结.网络爬虫是指通过一定的规则自动的从网上抓取一些信息的程序或脚本.我们知道机器学习和数据挖掘等都是从大量的数据出发,找到一些有价值有规律的东西,而爬虫则可以帮助我们解决获取数据难的问题,因此网络爬虫是我们应该掌握的一个技巧. python有很多开源工具包供我们使用,我这里使用了requests.Be

爬虫入门之爬取策略 XPath与bs4实现(五)

爬虫入门之爬取策略 XPath与bs4实现(五) 在爬虫系统中,待抓取URL队列是很重要的一部分.待抓取URL队列中的URL以什么样的顺序排列也是一个很重要的问题,因为这涉及到先抓取那个页面,后抓取哪个页面.而决定这些URL排列顺序的方法,叫做抓取策略.下面重点介绍几种常见的抓取策略: 1 深度优先遍历策略: 深度优先遍历策略是指网络爬虫会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接.我们以下面的图为例:遍历的路径:A-F-G E-H-I B C D

Python 爬虫入门之爬取妹子图

Python 爬虫入门之爬取妹子图 来源:李英杰  链接: https://segmentfault.com/a/1190000015798452 听说你写代码没动力?本文就给你动力,爬取妹子图.如果这也没动力那就没救了. GitHub 地址: https://github.com/injetlee/Python/blob/master/%E7%88%AC%E8%99%AB%E9%9B%86%E5%90%88/meizitu.py 爬虫成果 当你运行代码后,文件夹就会越来越多,如果爬完的话会有2