爬虫:在互联网上抓取数据
通用爬虫——百度、360、搜狐、谷歌、必应等等(搜索引擎)
原理:
1.抓取网页
2.提取数据
3.数据处理
4.提供检索服务
通用爬虫工作过程(百度为例):
1.主动提交url
2.设置友情链接
3.百度会和DNS服务商合作,抓取新网站
检索排名:
竞价排名
根据pagerank值,访问量,点击量(SEO)
rbots.txt:口头协议,基本无需遵守
聚焦爬虫——根据特定的需求,抓取指定的数据
思路:
代替浏览器上网
网页的特点:
1.网页都有自己唯一的url
2.网页内容都是html结构的
3.使用的都是http、https协议
步骤:
1.获取URL
2.写程序,模仿浏览器访问url
3.解析内容,提取数据
1.使用到的库:
urllib、requests、bs4
2.解析网页内容的知识:
正则表达式、bs4、xpath、jsonpath
3.涉及到动态html:
selenium+phantomjs\chromeheadless
4.scrapy框架:
高性能框架使用
5.scrapy-redis组件:
redis,分布式爬虫
6.涉及到爬虫-反爬虫-反反爬虫:
UA、代理、验证码、动态页面等
百度翻译


import urllib.request import urllib.parse # 获取url地址 post_url="https://fanyi.baidu.com/sug" # word = input("请输入您要查询的单词") word="hony" # 构建post表单数据 form_data = { "kw":word } # 发送请求过程 headers={ "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36" } # 构建请求对象 request = urllib.request.Request(url=post_url,headers=headers) # 表单数据的处理 form_data=urllib.parse.urlencode(form_data).encode() # 发送请求 response = urllib.request.urlopen(request,data=form_data) print(response.read().decode())
正则表达式替换文本内容


import re s1="我喜欢身高为165的萝莉" pattern = re.compile(r'\d+') # 将165替换为165-5 def func(a): ret = int(a.group())-5 return str(ret) # print(pattern.findall(s1)) print(pattern.sub(func,s1))
866

被折叠的 条评论
为什么被折叠?



