Python3爬虫之一

介绍:几乎每一个网站都有一个名为robot.txt文档,对于没有设定robot.txt文档 的网站可以通过网络爬虫获取没有口令加密的数据(即该网页的数据都可以爬取),对于有robot.txt文档的网站就要去判断是否有禁止访客获取的数据。
在这里插入图片描述
出现上面的代码时,表示除前面指定的爬虫外,不允许其他爬虫取任何数据。
如:https://www.taobao.com/robot.txt
爬虫原理
(1)网页请求过程:
request(请求):用户向服务器发送请求
response(响应):服务器发送内容给用户。
(2)网页请求方式:
GET:一般用于获取或者查询资源信息(响应速度比较快)
POST:多以表单形式上传参数的功能,除查询数据外,还可以修改信息。
注:爬虫前要先确定向谁发送请求,用什么方式发送。

  • 1、使用GET方式抓取数据
    复制任意一条首页首条新闻标题,在源码页面按 Ctr+f调出搜索框,将标题粘贴在搜索框中,然后按Enter键。
    比如:请求对象是www.cotour.cn,请求方式是GET如下图所示:
    在这里插入图片描述
    确定好请求对象后,在Pycharm中输入下面代码:
    import requests #导入requests包
    url=‘http://www.cntour.cn/
    strhtml=requests.get(url) #GET方式,获取网页数据
    print(strhtml.text)
    运行即可!!!!!
    注释:
    ‘’’
    requests.get
    strhtml=requests.get(url)
    将获取的数据存到strhtml变量中
    这时候,strhtml是一个URL对象,它代表整个网页,但此时只需要网页中的源码,下面语句表示网页的源码
    strhtml.text
    ‘’’

  • 2、使用POST方式抓取数据
    首先打开有道翻译的网址:http://www.fanyi.youdao.com/,
    进入有道翻译页面,按F12,进入开发者模式,单击Network,此时内容为空。(注:F12开发人员工具是一套按需采用的工具,网站开发人员可以随时在任何网页上使用F12工具,从而快速调试的JavaScript中,HTML和级联样式表(CSS),还可以跟踪并查明网页或网络的性能问题。部分电脑打开F12是需要组合键:FN + F12。)
    这中间遇到一点问题:f12快捷键打不开开发者模式,win10的系统问题还未解
    附上:POST抓取数据的代码。这是一有道翻译为例子的,在页面中输入我爱中国按下翻译;在开发者模式中。。。。。
    import requests
    import json
    def get_translate_date(word=None):
    url=‘http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule
    From_data={‘i’:word,‘form’:‘AUTO’,‘to’:‘AUTO’,‘smartresult’:‘dict’,‘client’:‘fanyideskweb’,
    ‘salt’:‘1512399450582’,‘sign’:‘78181ebbdcb38de9b4aa3f4cd1d38816b’,‘doctype’:‘json’,
    ‘version’:‘2.1’,‘keyfrom’:‘fanyi.web’,‘action’:‘EY_BY_CLICKBUTTION’,‘typoResult’:‘false’}
    #请求表单数据
    response = requests.post(url,data=payload)
    #将JSON格式字符串转为字典
    content = json.loads(response.text)
    #打印翻译后的数据
    print(connect[‘translateResult’][0][0][‘tgt’])
    if name==‘main’:
    get_translate_data(‘我爱中国’)

使用Beautiful Soup解析网页
通过requests库已经可以抓取源码,接下来就是从源码中找到并提取数据。Beautiful Soup目前已经被移植到bs4库中(所以在导入Beautiful Soup时需要先安装bs4库)。
安装好bs4库之后,就需要安装lxml库,如果不安装就会使用Python默认的解析器。
安装Python第三方库之后需要输入以下代码,就可以开启Beautiful Soup之旅。
import requests
from bs4 import BeautifulSoup
#固定格式
url=‘http://www.cntour.cn/
strhml=requests.get(url)
#内容
soup=BeautifulSoup(strhml.text,‘lxml’)
data=soup.select(’#main>div>div.mtop.firstMod.clearfix>div.centerBox>ul.newsList>li>a’)
print(data)
#固定格式
注:首先,HTML文档被转换成Unicode编码格式,然后Beautiful Soup现在最合适的解析器来解析这段文档,此处制定lxml解析器进行解析。解析后便将复杂的HTML文档换成树形结构,并且每一个节点都是Python对象。
这里将解析器的文档存储到新建的变量soup中,代码如下:
soup=BeautifulSoup(strhml.text,‘lxml’)
接下来选择select(选择器)定位数据,定位的数据需要使用浏览器的开发者模式,并将鼠标的光标停在对应的数据位置并右击,然后选择“检查”命令,
随后在浏览器右侧会提出开发者页面,右侧高亮的代码对应左侧高亮的数据文本。右击右侧高亮的数据,在弹出的快捷菜单中选择Copy->Copy Selector命令,便可以自动复制路径。
将路径粘贴在文档中,代码如下:
(’#main>div>div.mtop.firstMod.clearfix>div.centerBox>ul.newsList>li:nth-child(1)>a’)由于这条路径是选中的第一条的路径,而我们需要获取所有的头条新闻,因此将li:nth-child(1)中的:及后面部分去掉。代码如下
(’#main>div>div.mtop.firstMod.clearfix>div.centerBox>ul.newsList>li>a’)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值