写一个简单的爬虫

Posted wowhy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了写一个简单的爬虫相关的知识,希望对你有一定的参考价值。

(一)关于爬虫的合法性

以淘宝网为例,访问

https://www.baidu.com/robots.txt

最后有两行代码:

User-Agent: *
Disallow: /

意思是除了之前指定的爬虫,不允许其他爬虫爬取任何数据。

(二)html、CSS、javascript知识准备

(三)使用requests库请求网站

(1)Get方式  以www.cntour.cn为例

1 url = ‘http://www.cntour.cn/2 strhtml = requests.get(url)
3 print(strhtml.text)

(2)Post方式 以http://fanyi.youdao.com/为例

首先确定其信息传送方式及相关url。按F12出现开发者工具:

技术图片

当完成翻译,选择网络->XHR,出现我们要的URL,之后将它提取出来并赋值给url:

技术图片

查看此url的详情,确定其提交方式和具体信息:

技术图片

Post请求获取数据的方式不同于Get,必须构建请求头。表单数据(Form data)中请求参数如下,将其复制并会构造成一个字典:

技术图片

接下来开始使用 requests.post 方法请求表单数据:

 1 import requests
 2 import json
 3 def get_translate_data(word=None):
 4     url=http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
 5     Form_data = {i":"我爱中国
","from":"AUTO","to":"AUTO","smartresult":"dict","client":"fanyideskweb","salt":"15741317307555","sign":"8c28354728736eb14f6c6e7330b7d4c0","ts":"1574131730755","bv":"e2a78ed30c66e16a857c5b6486a1d326","doctype":"json","version":"2.1","keyfrom":"fanyi.web","action":"FY_BY_REALTlME"}
 6     # 请求表单数据
 7     response = requests.post(url, data=payload)
 8     # 将JSON格式字符串转字典
 9     content = json.loads(response.text)
10     # 打印翻译后的数据
11     print(content[translateResult][0][0][tgt])
12 if _name_==_main_:
13     get_translate_data(我爱数据‘)

(四)使用BeautifulSoup解析网页

通过requests库已经可以抓到网页源码,接下来要从源码中找到并提取数据——使用bs4库中的BeautifulSoup库。

首先html文档被转换成unicode编码格式,然后我们指定了lxml解析器对这段文档进行解析。解析后html文档变成树形结构,每个节点都是python对象。解析后的文档存储进新建的变量soup中。用select(选择器)定位数据,用“检查元素”,右击 copy->copy selector自动复制路径。

依然以www.cntour.cn为例:

1 import requests
2 from bs4 import BeautifulSoup
3 url=http://www.cntour.cn/
4 strhtml=requests.get(url)
5 soup=BeautifulSoup(strhtml.text, lxml)
6 data=soup.select(main > div > div.mtop.firstMod.clearfix > div.centerBox > ul.newsList > li > a)
7 print(data)

以上是关于写一个简单的爬虫的主要内容,如果未能解决你的问题,请参考以下文章

用python零基础写爬虫--编写第一个网络爬虫

scrapy按顺序启动多个爬虫代码片段(python3)

爬虫遇到头疼的验证码?Python实战讲解弹窗处理和验证码识别

scrapy主动退出爬虫的代码片段(python3)

python爬虫零基础入门——反爬的简单说明

创建自己的代码片段(CodeSnippet)