爬虫的核心在于通过F12对目标网页ajax的分析,分析明了了代码很简单。
一.获取搜狗首页信息
import requests # 导入模块
url = 'https://www.sogou.com/' # 指定目标网页
response = requests.get(url=url) # 通过get方式访问
page_text = response.text # 获取相应文本数据
with open('sougou.html', 'w', encoding='utf-8') as fp: # 创建文件指针,文件名sougou.html,打开文件方式为只写,解码方式为utf-8
fp.write(page_text) # 写文件
二.抓取关键词相关的网页
import requests # 导入模块
url = 'https://www.sogou.com/web' # 用搜狗搜索关键词
kw = input("ender a woed:") # 输入关键词
param = {
'query': kw # 设置表单参数
}
# UA伪装:请求的载体身份标识
head = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0"
} # 设置UA伪装为火狐流浪器
response = requests.get(url=url, params=param, headers=head) # 通过get方式携带参数进行访问
page_text = response.text # 获取相应的文本格式内容
file_name = kw + '.html' # 设置关键词相应的文件名
with open(file_name, 'w', encoding='utf-8') as fp: # 创建文件指针,文件名为,打开文件方式为只写,解码方式为utf-8
fp.write(page_text) # 写入文件
print(file_name, "保存成功!") # 保存成功相关网页的提示语
三.获取豆瓣指定电影榜单中电影的详细消息
import requests # 导入模块
import json
# 通过抓包工具分析后进行如下操作
url = "https://movie.douban.com/j/chart/top_list" # 指定需求网页
parm = {
'type': '24',
'interval_id': '100:90',
'action': ' ',
'start': '0',
'limit': '20'
} # 分析网页后传入相应参数
head = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0"
} # 进行UA伪装
response = requests.get(url=url, params=parm, headers=head) # 访问网页
data_list = response.json() # 通过F12分析可知返回信息为json格式
fp = open('douban.json', 'w', encoding='utf-8') # 创建文件指针,文件名为douban.json,打开文件方式为只写,解码方式为utf-8
json.dump(data_list, fp=fp, ensure_ascii=False) # 通过dump方式存进内存,取消ascii编码
四.破解百度翻译
import requests # 导入模块
import json
# 通过抓包工具分析后进行如下操作
post_url = 'https://fanyi.baidu.com/sug' # 通过抓包工具(F12)查看百度翻译的相关XHR获得相应网页
word = input("enter a word:") # 键入要翻译的词语
data = {
'kw': word # 设置表单信息
}
head = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0"
} # 进行UA伪装
response = requests.post(url=post_url, data=data, headers=head) # post方式访问网页
dic = response.json() # 通过F12可知返回信息为json格式
file_name = word + ".json" # 设置文件名
fp = open(file_name, 'w', encoding='utf-8') # 创建文件指针,文件名为file_name,打开文件方式为只写,解码方式为utf-8
json.dump(dic, fp=fp, ensure_ascii=False) # 通过dump方式存进内存,取消ascii编码
五.获取国家药品监管局化妆品许可证信息
import requests # 导入模块
import json
# 通过抓包工具分析后进行如下操作
url = 'http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsList' # 存放id的网页
head = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0"
} # 进行UA伪装
id_list = [] # 用于村id
all_data_list = [] # 用于存每条id对应的详细信息
for page in range(369): # 取出369*15种化妆品的id
data = {
"on": "true",
"page": page, # 通过改变表单参数改变访问的网页
"pageSize": "15",
"productName": "",
"conditionType": "1",
"applyname": "",
"applysn": "",
}
json_ids = requests.post(url=url, headers=head, data=data).json() # 通过json方法解析返回发数据
for dic in json_ids['list']: # 取出id
id_list.append(dic['ID']) # 存入id
post_url = 'ttp://scxk.nmpa.gov.cn:81/xk/itownet/portal/dzpz.jsp' # 用于获取每种化妆品对应的详细信息的根目录
for id in id_list:
data = {
'id': id, # 通过改变表单参数改变待访问网页
}
detail_json = requests.post(url=url, headers=head, data=data).json() # 通过json方法解析返回发数据
all_data_list.append(detail_json) # 保存每条id对应的详细信息
fp = open('all_data.json', 'w', encoding='utf-8') # 创建文件指针,文件名为all_data.json,打开文件方式为只写,解码方式为utf-8
json.dump(all_data_list, fp=fp, ensure_ascii=False) # 通过dump方式存进内存,取消ascii编码