赞
踩
概念:
python中原生的一款基于网络请求的模块,功能非常强大,简单便捷,效率极高。
作用:模拟浏览器发请求。
如何使用(request模块的编码流程):
环境安装:
pip Install requests
实战编码:
import requests
if __name__ == "__main__":
# step 1: 指定url
url = "https://www.sogou.com/"
# step 2: 发起请求,get方法会返回一个响应对象
response = requests.get(url=url)
# step 3: 获取响应数据,text方法返回字符串形式的响应数据
page_text = response.text
print(page_text)
# step 4: 持久化存储
with open('./sogou.html','w',encoding='utf-8') as fp:
fp.write(page_text)
print("爬取数据结束")
import requests if __name__ == "__main__": # UA伪装:将对应的User-Agent封装到一个字典中 # Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36' } # step 1: 指定url url = "https://www.sogou.com/web" # 处理url携带的参数:封装到字典中 kw = input('enter a word:') param = { 'query': kw } # step 2: 对指定的url发起的请求对应的url是携带参数的,并且请求过程中处理了参数,get方法会返回一个响应对象 response = requests.get(url=url, params=param, headers=headers) # step 3: 获取响应数据,text方法返回字符串形式的响应数据 page_text = response.text print(page_text) # step 4: 持久化存储 fileName = kw + '.html' with open(fileName, 'w', encoding='utf-8') as fp: fp.write(page_text) print(fileName, "保存成功")
import requests import json if __name__ == "__main__": # step 1: 指定url post_url = 'https://fanyi.baidu.com/sug' # post请求参数处理(同get请求一致) word = input('enter a word:') data = { 'kw': word } # UA伪装 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36' } # 请求发送 response = requests.post(url=post_url, data=data, headers=headers) # step 3: 获取响应数据,json方法返回的是obj(如果确认响应数据是json类型的,才可以使用json) dic_obj = response.json() print(dic_obj) # step 4: 持久化存储 fileName = word + ".json" fp = open(fileName, 'w', encoding='utf-8') json.dump(dic_obj, fp=fp, ensure_ascii=False) print("over")
import requests import json if __name__ == "__main__": url = 'https://movie.douban.com/j/chart/top_list' param = { 'type': '24', 'interval_id': '100:90', 'action': '', 'start': '0', # 从库中的第几部电影去取 'limit': '20' # 一次取出的个数 } headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36' } response=requests.get(url=url,params=param,headers=headers) list_data=response.json() fp=open('./douban.json','w',encoding='utf-8') json.dump(list_data,fp=fp,ensure_ascii=False) print("over")
import requests
if __name__ == "__main__":
# UA伪装:将对应的User-Agent封装到一个字典中
# Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36'
}
url = "http://scxk.nmpa.gov.cn:81/xk/"
page_text = requests.get(url=url,headers=headers).text
with open('./huazhuangpin.html','w',encoding='utf-8') as fp:
fp.write(page_text)
UA:
User-Agent(请求载体的身份标识)
UA检测:
问题:
selenium模块和爬虫之间具有怎样的关联?
什么是selenium模块?
selenium使用流程:
由于数据是动态加载的,在all中数据包做全局搜索:
from selenium import webdriver from lxml import etree from time import sleep # 实例化一个浏览器对象(传入浏览器的驱动程序) bro = webdriver.Chrome(executable_path=r'E:\Downloads\chromedriver.exe') # 让浏览器发起一个指定url对应请求 bro.get("http://scxk.nmpa.gov.cn:81/xk/") # 获取浏览器当前页面的页面源码数据 page_text = bro.page_source # 解析企业名称 tree = etree.HTML(page_text) li_list = tree.xpath('//ul[@id="gzlist"]/li') #'//ur[@id="gzlist"]/li' for li in li_list: name = li.xpath('./dl/@title')[0] print(name) sleep(5) bro.quit()
python3.9 lxml引入etree会报错
解决方法:lxml4.2.5版本带有etree模块,且该版本lxml支持python3.7.4版本
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。