吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1554|回复: 8
收起左侧

[求助] python每次运行到这里就报错,没思路……

[复制链接]
double07 发表于 2021-5-6 18:32
本帖最后由 double07 于 2021-5-7 09:40 编辑

[Python] 纯文本查看 复制代码
import random
import re
import time

import chardet
import requests
from fake_useragent import UserAgent
from lxml import etree


p = 0
curPage = 1
link_list = []

ua = UserAgent()
header = {
    'authority': 'sf.taobao.com',
    'cache-control': 'max-age=0',
    'sec-ch-ua': '"Google Chrome";v="89", "Chromium";v="89", ";Not A Brand";v="99"',
    'sec-ch-ua-mobile': '?0',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36',
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'sec-fetch-site': 'same-origin',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-user': '?1',
    'sec-fetch-dest': 'document',
    'referer': 'https://sf.taobao.com/item_list.htm?&category=50025969&province=%D6%D8%C7%EC&sorder=1&page=1',
    'accept-language': 'zh-CN,zh;q=0.9',
    'cookie': '',
}

params = (
    ('category', '50025969'),
    ('province', '%D6%D8%C7%EC'),
    ('sorder', '1'),
    ('page', '1'),
)



# 获取网页内容
def gethtml(url):
    response = requests.get(url, headers=header, params=params)
    encodingInfo = chardet.detect(response.content)
    r_response = response.content.decode(encodingInfo['encoding'])
    return r_response


def gethtml_detail(url):
    response = requests.get(url, headers=header, params=params)
    encodingInfo = chardet.detect(response.content)
    r_response = response.content.decode(encodingInfo['encoding'])
    return r_response


def parse_url(html):
    ult = re.findall(r'(sf-item[\S]+)\?', html)  # 详情链接
    for i in range(len(ult)):
        detai_url = "https://" + ult[i].replace('"', "")  # 房屋详情
        link_list.append(detai_url)
    return link_list


def parse_url_detail(r):
    html = etree.HTML(r)
    try:
        final_link = "https:" + html.xpath('//*[@id="J_NoticeDetail"]/@data-from')[0].strip()
    except Exception as e:
        print(str(e), "代码异常,链接返回空值")
        final_link = ' '
    return final_link


# 翻页
def next_page():
    url_np = 'https://sf.taobao.com/item_list.htm?&category=50025969&province=%D6%D8%C7%EC&sorder=1&page={}'
    url_list = [url_np.format(i + 1) for i in range(0, curPage)]
    return url_list


# 主程序
def run_AL():
    page = next_page()
    for i in page:
        html = gethtml(i)
        l_list = parse_url(html)
        # print(len(l_list))
        for u in l_list[0:40]:
            html_detail = gethtml_detail(u)
            parse = parse_url_detail(html_detail)
            print(parse)


if __name__ == '__main__':

    run_AL()




每次运行到这里就报错,苦恼,大佬有时间运行代码,帮忙看看:
微信截图_20210506183143.png

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

goldli 发表于 2021-5-6 18:55
没有正常返回。
goldli 发表于 2021-5-6 18:58
调试时,//将用户正常页面写入到 x5referer ,以备后续跳转返回
santus36 发表于 2021-5-6 19:31
你在parse_url_detail里面输出一下html的内容看看呗
fanvalen 发表于 2021-5-6 19:49
刚开始调试的还可以显示,
再运行时估计楼上也在运行然后//将用户正常页面写入到
估计是被检测了,还有就是速度太快,被检测到也是正常,
这种必须加延时请求5-10秒
还有最好分段请求 不要重复请求
所有的列表页请求后写成文件,下次不再请求,而是读取文件导入,
最后请求详细页

你的代码写的有些重复 gethtm一个就够了,我看代码都是一样名字不一样
另外有个东西不知道会不会有影响,就是header里面的referer,这个是从哪里引用的意思,
如果服务器检查严格点发现来自引用位置不对,就会判定盗链,这会触发拒绝访问的
一般做字典的update 更新一下请求页面来着何处,

fanvalen 发表于 2021-5-6 19:57
fanvalen 发表于 2021-5-6 19:49
刚开始调试的还可以显示,
再运行时估计楼上也在运行然后//将用户正常页面写入到
估计是被检测了,还有就 ...

另外我不确定是请求的网页被警告还是什么原因导致没有匹配到公告地址,
我的做法是把所有的详细页都写成单个文件或者一个文件,再来清洗出地址,
所以请求页回来最好做一个判断是否正常页面,比如警告页面大小和正常不一样,又或者某些字在不在里面,,在的话判定为正常,不在就要考虑是错误页面,必要时必须停止。否则封号就不好玩了
 楼主| double07 发表于 2021-5-6 20:04
fanvalen 发表于 2021-5-6 19:49
刚开始调试的还可以显示,
再运行时估计楼上也在运行然后//将用户正常页面写入到
估计是被检测了,还有就 ...

学习学习

出现这种情况,换个ip,又能开始了,但还是到15条就断了,这种情况有必要用代{过}{滤}理池?
fanvalen 发表于 2021-5-6 20:52
double07 发表于 2021-5-6 20:04
学习学习

出现这种情况,换个ip,又能开始了,但还是到15条就断了,这种情况有必要用代{过} ...

光换ip不能解决问题,主要是找到检测机制,我看了检测后返回的web页面是,是说退出登录,和登录后继续打开的页面,也就是说重新生成ck可以再登录

[HTML] 纯文本查看 复制代码
<script>
  //将用户正常页面写入到 x5referer ,以备后续跳转返回
localStorage.x5referer = "https://sf.taobao.com/item_list.htm?&category=50025969&province=%D6%D8%C7%EC&sorder=1&page=1&category=50025969&province=%25D6%25D8%25C7%25EC&sorder=1&page=1";	
location.href="https://login.taobao.com/member/login.jhtml?redirectURL="+encodeURIComponent("https://sf.taobao.com:443//item_list.htm/_____tmd_____/punish?x5secdata=5e0c8e1365474455070961b803bd560607b52cabf5960afff39b64ce58073f78849a367443dd53565277002f507099b27b385fff7bc17a03cafdfd3769a9e81855b38bd923f8e97fc47c28363b278d8b65b0309398014db5684e8a0ec481572e461ee819ca12264cfd380e1ff9a318178839e447c1ca28d219623dae264e7e3c1f342e6f2c4996b587f669dbab68dcd2ab7695fa94590174dcf16e66463ff3e4da92297ed56a297b527fabd4fb0db2aa5fd102e32437f7b8741ec5aa54e4ecf042adeb9e9e60bd20ec8b0196dcfea1b2f9b86c27692bf843654469bc1ede3d7d31456b32ac99bd8d798d7e75290032c81a626a42548bb6ebdecd804bf573367db546d5a02a05c67cd3736b8b85f1bc2f325c1ed71d8363d6a82d206f2b6e9ac8874359d89eb3048a2f5487e9af5b14a6779425216103151458d986536e9c2e21262bc194ca0504960bb2bcab9457150272e2426182b21c9cda16ddea79835236bf51b9837e42f98f4788d8c18a6dcae66bf750f0f38514b819d574fff4e9d8597391b8025c3bb32e549c8e12132b4e6b602db37b3e34a2ddbd16b97b7a9b1a78e6f1c94e53a73ce3bdc99b65b07dfb8059bd83c90f8d25145b780a7eea8a81dd40625c8bd1c64ee3c99c0dc47f9e294a1149ae8e03fac1bb2fd9b03377b20417e706cce39572ff911191a7c02ed414e8f3a339cfd8acc95a48d16687d8e57d47b3683c0406e41204937c8c4100007402&x5step=100")
</script>
Angel-Hang 发表于 2021-5-7 10:22
问一下,是不是可以检测到这种问题重新注入登录信息
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

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

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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