目的
1、掌握使用urllib库爬取网页
2、掌握如何转换URL编码,可以使用GET和POST两种方式实现数据传输
3、知道伪装浏览器的用途
4、掌握requests库的使用
任务
1、编写一个程序,爬取词典翻译“Python”时的页面。
import requests
url = 'https://fanyi.youdao.com/translate'
kw = input("请输入单词:")
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
}
data = {
'i': kw,
'from': 'AUTO',
'to': 'AUTO',
'smartresult': 'dict',
'client': 'fanyideskweb',
'salt': '16473110944628',
'sign': 'aed7ffcd4271c9b0c241e5b28a0ad99f',
'lts': '1647311094462',
'bv': 'b396e111b686137a6ec711ea651ad37c',
'doctype': 'json',
'version': '2.1',
'keyfrom': 'fanyi.web',
'action': 'FY_BY_REALTlME'
}
response = requests.post(url=url,headers=headers,data=data).json()
dic = response['translateResult'][0][0]
print("{}翻译为{}".format(dic['src'],dic['tgt']))
2、编写一个程序,接受用户输入需翻译的内容,爬取网页翻译结果。
import requests
kw = input("请输入要翻译的单词:")
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
}
url = 'https://fanyi.baidu.com/sug'
data = {
'kw':kw
}
response = requests.post(url = url,headers=headers,data=data).json()
resData = response['data']
for i in resData:
print("{}: {}".format(i['k'],i['v']))
3、编写一个程序,分别使用urllib和requests 爬取关于Python的网页搜索页面。
import requests
url = 'http://www.baidu.com/s'
response = requests.get(url=url).text
response.encode('utf-8')
print(response)
4、编写一个程序,根据用户输入的商品名、起始页和结束页,爬取贴吧。
import requests
kw = input('请输入关键字:')
url = f'https://tieba.baidu.com/f'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
}
start = eval(input('请输入起始页面:'))
end = eval(input('请输入最后页面:'))
pnMax = (end-start+1)*49
pn = start*49
while pn<=pnMax:
params = {
'kw':kw,
'ie':'utf-8',
'pn':pn
}
response = requests.get(url=url,headers=headers,params=params).text
pn+=49
print(response)