鱼C论坛

 找回密码
 立即注册
查看: 1909|回复: 5

[已解决]python 爬虫问题求助

[复制链接]
发表于 2021-5-22 21:08:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
因为网页上存在分页,观察了下分页是ddlpage发生了变化,可是下边的代码爬取时还是只爬取了一页,求个大神指点
import requests
from bs4 import BeautifulSoup
import re
import time


def gethtml():
    url ="https://www.zjgrc.com/posSearchRslt.aspx?textPosKey=沙钢集团"
    headers = {
      "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"
    }
    for i in range(0,2):
        data = {
            "ddlPage": 0,
            "ddlPage": 1

        }
        r = requests.post(url, data=data)
        time.sleep(2)

        print(r.text)
        print("结束")

if __name__ == '__main__':
    gethtml()
最佳答案
2021-5-23 21:08:23
代码小白liu 发表于 2021-5-22 22:02
方便的话给点代码吧
import requests
import re

url = 'https://www.zjgrc.com/posSearchRslt.aspx?textPosKey=%E6%B2%99%E9%92%A2%E9%9B%86%E5%9B%A2'
headers = {
    'User-Agent': 'Mozilla/5.0',
}

# 第一页
res = requests.get(url, headers=headers)

# 获取翻页参数
state = re.findall('__VIEWSTATE" value="(.*?)" />', res.text)[0]
state_generator = re.findall('__VIEWSTATEGENERATOR" value="(.*?)" />', res.text)[0]
event_validation = re.findall('__EVENTVALIDATION" value="(.*?)" />', res.text)[0]

# 翻页(第二页)
data = {
    '__EVENTTARGET': 'lbNext',
    '__EVENTARGUMENT': '',
    '__LASTFOCUS': '',
    '__VIEWSTATE': state,
        '__VIEWSTATEGENERATOR': state_generator,
    '__EVENTVALIDATION': event_validation,
    'hfKey': '沙钢集团',
    'txtDw': '',
    'txtDw_TextBoxWatermarkExtender_ClientState': '',
    'txtPos': '',
    'txtPos_TextBoxWatermarkExtender_ClientState': '',
    'ddlPage': 0
}
res1 = requests.post(url, headers=headers, data=data)
print(res1.text)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-22 21:21:22 | 显示全部楼层
for i in range(0,2):
        data = {
            "ddlPage": i
        }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-22 21:25:20 | 显示全部楼层
路神 发表于 2021-5-22 21:21
for i in range(0,2):
        data = {
            "ddlPage": i


不行,我最开始也是这么写的,爬下来还是只有一页
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-22 21:50:41 | 显示全部楼层
代码小白liu 发表于 2021-5-22 21:25
不行,我最开始也是这么写的,爬下来还是只有一页

其他参数也要填
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-22 22:02:14 | 显示全部楼层
路神 发表于 2021-5-22 21:50
其他参数也要填

方便的话给点代码吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-23 21:08:23 | 显示全部楼层    本楼为最佳答案   
代码小白liu 发表于 2021-5-22 22:02
方便的话给点代码吧
import requests
import re

url = 'https://www.zjgrc.com/posSearchRslt.aspx?textPosKey=%E6%B2%99%E9%92%A2%E9%9B%86%E5%9B%A2'
headers = {
    'User-Agent': 'Mozilla/5.0',
}

# 第一页
res = requests.get(url, headers=headers)

# 获取翻页参数
state = re.findall('__VIEWSTATE" value="(.*?)" />', res.text)[0]
state_generator = re.findall('__VIEWSTATEGENERATOR" value="(.*?)" />', res.text)[0]
event_validation = re.findall('__EVENTVALIDATION" value="(.*?)" />', res.text)[0]

# 翻页(第二页)
data = {
    '__EVENTTARGET': 'lbNext',
    '__EVENTARGUMENT': '',
    '__LASTFOCUS': '',
    '__VIEWSTATE': state,
        '__VIEWSTATEGENERATOR': state_generator,
    '__EVENTVALIDATION': event_validation,
    'hfKey': '沙钢集团',
    'txtDw': '',
    'txtDw_TextBoxWatermarkExtender_ClientState': '',
    'txtPos': '',
    'txtPos_TextBoxWatermarkExtender_ClientState': '',
    'ddlPage': 0
}
res1 = requests.post(url, headers=headers, data=data)
print(res1.text)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 12:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表