import urllib.parse
import urllib.request
def requert_get(page):
first_url='https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&'
data={
'start':(page-1)*20, #根据上面规则start = (page-)*20. 所以我们需要实参page的值
'limit':20
}
data=urllib.parse.urlencode(data)
url= first_url+data
headers = {
'User-Agent': ' Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49'
}
requerst=urllib.request.Request(url=url,headers=headers)
return requerst
def reqopne_get(requerst):
content = urllib.request.urlopen(requerst) #模拟浏览器像服务器发送请求
contents=content.read().decode('utf-8')
return contents #返回contents的值
def plase_get(page,contents):
with open('douban.'+str(page)+'json','w',encodings='utf-8') as fp:
fp.write(contents)
if __name__ == '__main__':
utf_name=int(input('请输入开始页码'))
last_name=int(input('请输入结束页码'))
for page in range(utf_name,last_name+1): #左闭又开想要获取10页数据 10+1 11获取第10页数据
#请求对象定制
requerst=requert_get(page)
#获取响应的数据
contents=reqopne_get(requerst)
#下载数据
plase_get=(page,contents)
基础爬虫 不报错也不下数据
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
关注 帮你改好了
```python import urllib.parse import urllib.request def requert_get(page): first_url = 'https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&' data = { 'start': (page - 1) * 20, # 根据上面规则start = (page-)*20. 所以我们需要实参page的值 'limit': 20 } data = urllib.parse.urlencode(data) url = first_url + data headers = { 'User-Agent': ' Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49' } requerst = urllib.request.Request(url=url, headers=headers) return requerst def reqopne_get(requerst): content = urllib.request.urlopen(requerst) # 模拟浏览器像服务器发送请求 contents = content.read().decode('utf-8') return contents # 返回contents的值 def plase_get(page, contents): filename = 'douban.' + str(page) + 'json' with open(filename, 'w', encoding='utf-8') as fp: fp.write(contents) print('保存完成') if __name__ == '__main__': utf_name = int(input('请输入开始页码')) last_name = int(input('请输入结束页码')) for page in range(utf_name, last_name + 1): # 左闭又开想要获取10页数据 10+1 11获取第10页数据 # 请求对象定制 requerst = requert_get(page) # 获取响应的数据 contents = reqopne_get(requerst) # 下载数据 plase_get(page, contents)
```
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 能给我一些人生建议吗
- ¥15 mac电脑,安装charles后无法正常抓包
- ¥18 visio打开文件一直显示文件未找到
- ¥15 请教一下,openwrt如何让同一usb储存设备拔插后设备符号不变?
- ¥30 使用quartz框架进行分布式任务定时调度,启动了两个实例,但是只有一个实例参与调度,另外一个实例没有参与调度,不知道是为什么?请各位帮助看一下原因!!
- ¥50 怎么获取Ace Editor中的python代码后怎么调用Skulpt执行代码
- ¥30 fpga基于dds生成幅值相位频率和波形可调的容易信号发生器。
- ¥15 R语言shiny包和ncdf4包报错
- ¥15 origin绘制有显著差异的柱状图和聚类热图
- ¥20 simulink实现滑模控制和pid控制对比,提现前者优势