学习爬虫lesson1

#这几个例子都是具体的单独的一个数据的爬取,要从网站同时爬取多个还得深入学习从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() #要记得加,不然打开多个没关会容易报错
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值