python 如何爬取url翻页不变的网址 5C

http://mzj.beijing.gov.cn/wssbweb/wssb/dc/searchOrgList.do?action=searchOrgList

我需要爬取这个网站每一家公司的详细信息,我的思路是通过这个主页面爬取所有详情页面的网址,然后再打开详情页面(公司详细信息页面)爬取需要的数据。我现在面临的问题是,这个网址翻页时网址没有发生变化,在网上查了很多方法都没有用,总是重复爬取第一页内容。

求各位大神赐教!!

这是我的代码:

import requests
import os
import re
ww='http://mzj.beijing.gov.cn'
web=[]
def get_page(url,page_num):
pageList =[]
for i in range(1,page_num +1):
formdata ={'type':'index' ,
'paged': i}##从网上找的方法,也用了requests.post,也试过把paged改成current_page都无效
try:
r = requests.post(url,data =formdata)
r.raise_for_status()
r.encoding = r.apparent_encoding
p = re.compile('<a href="(.*?)"\starget')
tempList = re.findall(p,r.text)
for each in tempList:
site=ww+each
pageList.append(site)
tempList = []
except:
print('链接失败')
return pageList
url='http://mzj.beijing.gov.cn/wssbweb/wssb/dc/searchOrgList.do?action=searchOrgList'
web=get_page(url,763)
len(web)

weixin_41993251
weixin_41993251 formdata={'page_flag':'true','goto_page':'next','current_page':i,'total_count':15254,'registrationDeptCode':'','netTypeId':2,'order':'','status':'','websitId':100,'corporateType':'','registrationNo':'','orgName':''}
大约一年之前 回复

3个回答

我一般遇到这种情况会有两个思路:
1.爬取主页面所有详情页的网址存入数据库,等全部存入后,然后第二步,逐个打开这些详情页进行爬取。
当然,这可能需要对主页拿到的详情网址进行处理,因为拿到的可能是一些相对路径,需要把他们转换为标准的url,再存入数据库

2.用selenium自动化测试框架写爬虫,就不必这样做,打开主页后,操作浏览器机器人,打开一个详情页,取完信息后存起来,再返回上一页,这种方法很麻烦,需要对selenium非常了解,

建议选第一个,不但可以做断点续爬,而且可以做多线程爬虫,就是给几个爬虫分配不动的任务,让他们一起爬

图片说明 post请求的参数是这样的,你的参数设置的明显不对,还有就是你没有设置header(请求头)

weixin_41993251
weixin_41993251 后来我加了formdata={'page_flag':'true','goto_page':'next','current_page':i,'total_count':15254,'registrationDeptCode':'','netTypeId':2,'order':'','status':'','websitId':100,'corporateType':'','registrationNo':'','orgName':''}做出来了,还是没有加header。想问一下是不是header跟代理有关系,因为我找不到可以用的IP就放弃了
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐