吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1325|回复: 19
收起左侧

[求助] 正则的问题在哪里呢?? 为啥为空? 抓包里面有的啊

[复制链接]
lihu5841314 发表于 2021-5-31 12:55
本帖最后由 lihu5841314 于 2021-5-31 16:41 编辑

[Asm] 纯文本查看 复制代码
import  os
import re
import  requests
from  lxml import  etree


url = "https://www.qidian.com/all"

headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
    }
sep1=requests.get(url=url,headers=headers).text
tree = etree.HTML(sep1)
detail_url ="https:"+tree.xpath('//div[@class="all-book-list"]//a[1]/@href')[0]
sep2 = requests.get(url=detail_url,headers=headers).text
url2 = re.findall(r'//www\.qidian\.com/all\?orderId=&style=1&pageSize=20&siteid=1&pubflag=0&hiddenField=0&page=(\d+)',sep2)
print(url2)

正则在线没问题啊

正则在线没问题啊
1b929d85c7df48b59f6c63435bd8ce0.png
669a2b8fbe38927693cad53df6198ac.png

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

89684828 发表于 2021-5-31 13:11
前面加r了,里面内容不用再转义
bluerabbit 发表于 2021-5-31 13:18
1. 前面加了 r,里面就不用再转义
2. sep2 里确实没有正则对应的内容,是不是需要先模拟登录?
ligxi 发表于 2021-5-31 13:37
[Python] 纯文本查看 复制代码
import re
import requests
from lxml import etree

url = "https://www.qidian.com/all"

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
}
sep = requests.get(url=url, headers=headers).text
tree = etree.HTML(sep)
# 书籍地址
detail_url = tree.xpath('//ul[@class="all-img-list cf"]/li/div/a/@href')
for d in detail_url:
    print('https:' + d)
# 页码
rec = re.compile(r'<a data-page="\d+" href="//(.*?)"', re.S)
ref = rec.findall(sep)
for f in ref:
    print(f)
 楼主| lihu5841314 发表于 2021-5-31 13:37
bluerabbit 发表于 2021-5-31 13:18
1. 前面加了 r,里面就不用再转义
2. sep2 里确实没有正则对应的内容,是不是需要先模拟登录?

用network抓的包的里面搜索得翻啊  
Glenn 发表于 2021-5-31 13:44
本帖最后由 Glenn 于 2021-5-31 13:45 编辑

你是要获取 href 里的内容吗?   可以这样 re.findall(r'(?<=href=\")\S+', sep2)[0][:-1]   
知心 发表于 2021-5-31 13:49
你这个代码着实写的有些草率呀?你要匹配的这个内容是请求首页,返回结果里边查找下一页的地址。结果详情页里边去匹配了,怎么能匹配到呢
lifeixue 发表于 2021-5-31 13:59
Snipaste_2021-05-31_13-58-36.png
在详情页内匹配分页地址,这波操作我是着实看不懂
Ifover 发表于 2021-5-31 14:43
urllib.parse(拼不来  可以用么
lifeixue 发表于 2021-5-31 15:42
[Python] 纯文本查看 复制代码
import re
import requests
from lxml import etree

url = "https://www.qidian.com/all"

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
}
sep1 = requests.get(url=url, headers=headers).text
tree = etree.HTML(sep1)
# detail_url = "https:" + tree.xpath('//div[@class="all-book-list"]//a[1]/@href')[0]
# sep2 = requests.get(url=detail_url, headers=headers).text
print("----------获取分页地址第一种方法:使用正则-----------")
url2 = re.findall(r'<a data-page="\d+" href="(.*?)"', sep1)  # 页码(楼主原来的问题就是在这里出错的)
"""
这里补充一下你原来的问题出在哪里:
1.正则匹配的是括号内的内容
2.楼主不应该在sep2(详情页)内匹配页码,而应该在sep1(首页url)内匹配页码
3.楼主正则表达式有误
"""
for i in url2:
    pages = "https:" + i
    print(pages)
print("----------获取分页地址第二种方法:使用xpath-----------")
url2 = tree.xpath("//div//ul/li[@class='lbf-pagination-item'][position()>1][position()<6]/a/@href")  # 页码
for i in url2:
    pages = "https:" + i
    print(pages)
print("以上两种方法,更推荐使用正则,相对简单")
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-26 03:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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