#这几个例子都是具体的单独的一个数据的爬取,要从网站同时爬取多个还得深入学习从html中提取数据
#example 1
from urllib.request import urlopen
url = "http://www.baidu.com" #url代表要获取的网页
resp = urlopen(url) #打开这个网页得到响应
#读出来,decode解码,把read出来的内容保存到文件中去
with open("mybaidu.html",mode="w",encoding="utf-8") as f:
f.write(resp.read().decode("utf-8"))
#read到的或者说是write保存到文件里的就是百度页面的源代码
resp.close()
#example 2
import requests
query = input("输入一个搜索名")
url = f'https://www.sogou.com/web?query={query}'
Headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.6241 SLBChan/12"
}
#右键检查 network 刷新页面 点第一个header看头部里面有个user-agent用来描述当前的请求是哪个设备发出的.把它加到爬出去就知道我这是个正常浏览器而不是爬虫程序
resp = requests.get(url, headers=Headers) #复制的地址栏中的地址一般都是用get+处理一个反爬
print(resp.text) #得到页面源代码
resp.close()
#example 3
import requests
url = 'https://fanyi.baidu.com/sug'
s = input("请输入你要翻译的英文单词")
dic = {
"kw":s
} #定义一个字典里面有自己要传递的参数
resp = requests.post(url, data = dic) #发送post请求发送的数据必须放在字典中通过data参数进行传递
print(resp.json())
resp.close()
#example 4
import requests
#url = 'https://movie.douban.com/j/chart/top_list?type=24&interval_id=100%3A90&action=&start=0&limit=1'当参数太长时考虑封装
url = 'https://movie.douban.com/j/chart/top_list' #?后的就是query string里的内容,检查hearder里可以查看
param = {
"type": "24",
"interval_id":"100:90",
"action":"",
"start": "0",
"limit": "1"
}#不要忘记给复制query string里的内容加引号
Headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.6241 SLBChan/12"
}#把真正的useragent沾上,反爬开始
resp = requests.get(url=url, params=param, headers=Headers)
#print(resp.request.url) #结果就是长的网址
print(resp.json())#能运行,没有内容,因为这网站反爬,就要去尝试看这爬虫程序默认的一些东西和原网站有什么不一样;加入了反爬后运行就有结果了哈哈
#print(resp.request.headers)#运行结果中'User-Agent'是 'python-requests/2.27.1',复制原网站中的useragent反爬
resp.close() #要记得加,不然打开多个没关会容易报错
|