吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 834|回复: 7
收起左侧

[求助] python selector.css方法爬不到数据求助

[复制链接]
tianyagd 发表于 2023-10-6 23:09
import requests
import parsel
from parsel import Selector

headers={
    'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Mobile Safari/537.36'
}

url='https://www.gov.cn/zhengce/zuixin/home_4.htm'
response = requests.get(url,headers=headers)
response.encoding='utf-8'
html = response.text
#print(html)
selector=parsel.Selector(html)
print(selector)

policy=selector.css('.news_box .list a::text').getall()
date=selector.css('.news_box .list span.date::text').getall()
href=selector.css('.news_box .list a::attr(href)').getall()
print(policy,date,href)

现象: html 可以获取到数据  selector打印也有数据 ,但是后面的三个列表都是空值,问题出在哪里呢?
另外在开发者模式下,Ctrl+F 查找时,.news_box .list a 能够找到20条数据
请问如何修改这段代码

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

外酥内嫩 发表于 2023-10-6 23:44
断点调试下
longzhouming 发表于 2023-10-6 23:48
其实只是你直接用requests抓下来的html里面多了个</html>标签 然后把后面的内容全阻断了而已
很快再相见123 发表于 2023-10-7 00:51
本帖最后由 很快再相见123 于 2023-10-7 00:52 编辑

[Python] 纯文本查看 复制代码
参考官网api
https://parsel.readthedocs.io/en/latest/

import requests
# import parsel
from parsel import Selector


def main_func():
    headers = {
        'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) '
                      'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Mobile Safari/537.36'
    }

    url = 'https://www.gov.cn/zhengce/zuixin/home_4.htm'
    response = requests.get(url, headers=headers)
    response.encoding = 'utf-8'
    html = response.text
    # print(html)
    selector = Selector(str(html).replace('<!DOCTYPE html>', ''))
    print(selector)

    policy = selector.css('.news_box .list a::text').getall()
    date = selector.css('.news_box .list span.date::text').getall()
    href = selector.css('.news_box .list a::attr(href)').getall()
    print(policy, date, href)


if __name__ == '__main__':
    main_func()

get请求的结果str,删除<!DOCTYPE html>即可
(官网啥都有,多看看,没坏处)

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
liyitong + 1 + 1 我很赞同!
tianyagd + 1 + 1 谢谢@Thanks!

查看全部评分

py学徒 发表于 2023-10-7 05:59
parsel模块众所周知是一个python的第三方库,其作用和功能等价于css选择器,xpath和re的集合版。和其他解析模块相比,例如BeautifulSoup,xpath等,parsel效率更高,使用更简单。
 楼主| tianyagd 发表于 2023-10-7 06:50
很快再相见123 发表于 2023-10-7 00:51
[mw_shl_code=python,true]参考官网api
https://parsel.readthedocs.io/en/latest/

谢谢 我用你的方法确实可以获取到数据,但是还是有一点不明白。另外一个网站也是以<!DOCTYPE html>开头,结果不受影响。

#广东省人民政府网站
import requests
import parsel
from parsel import Selector

headers={
    'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Mobile Safari/537.36'
}

url='http://www.gd.gov.cn/gdywdt/gdyw/index.html'
response = requests.get(url,headers=headers)
response.encoding='utf-8'
html = response.text
#print(html)
s=parsel.Selector(html)
print(s)


policy=s.css('.viewList ul li a::text').getall()
time=s.css('.viewList ul li .time::text').getall()
href=s.css('.viewList ul li a::attr(href)').getall()
print(policy,time,href)
 楼主| tianyagd 发表于 2023-10-7 12:41
longzhouming 发表于 2023-10-6 23:48
其实只是你直接用requests抓下来的html里面多了个标签 然后把后面的内容全阻断了而已

谢谢你的提示,方法有效,是不是有什么工具,可以检测网页代码?这么快就找到问题了。

[Asm] 纯文本查看 复制代码
import requests
import parsel
from parsel import Selector
import re 
headers={
    'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Mobile Safari/537.36'
}

url='https://www.gov.cn/zhengce/zuixin/home_4.htm'
response = requests.get(url,headers=headers)
response.encoding='utf-8'
html_code = response.text
new_html_code = re.sub(r'</html>', '', html_code, count=1)

selector=parsel.Selector(new_html_code)
print(selector)

policy=selector.css('.news_box .list a::text').getall()
date=selector.css('.news_box .list span.date::text').getall()
href=selector.css('.news_box .list a::attr(href)').getall()
print(policy,date,href)
sai609 发表于 2023-10-7 13:44
本帖最后由 sai609 于 2023-10-7 13:47 编辑

有用的爬不了,没用的爬再多也还是没用
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 19:36

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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