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

double072021-5-674

[Python] 纯文本查看 复制代码
import randomimport reimport timeimport chardetimport requestsfrom fake_useragent import UserAgentfrom lxml import etreep = 0curPage = 1link_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_responsedef 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_responsedef 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_listdef 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()
每次运行到这里就报错,苦恼,大佬有时间运行代码,帮忙看看:

最新回复 (8)
  • goldli2021-5-6
    引用2
    没有正常返回。
  • goldli2021-5-6
    引用3
    调试时,//将用户正常页面写入到 x5referer ,以备后续跳转返回
  • santus362021-5-6
    引用4
    你在parse_url_detail里面输出一下html的内容看看呗
  • fanvalen2021-5-6
    引用5
    刚开始调试的还可以显示,
    再运行时估计楼上也在运行然后//将用户正常页面写入到
    估计是被检测了,还有就是速度太快,被检测到也是正常,
    这种必须加延时请求5-10秒
    还有最好分段请求 不要重复请求
    所有的列表页请求后写成文件,下次不再请求,而是读取文件导入,
    最后请求详细页你的代码写的有些重复 gethtm一个就够了,我看代码都是一样名字不一样
    另外有个东西不知道会不会有影响,就是header里面的referer,这个是从哪里引用的意思,
    如果服务器检查严格点发现来自引用位置不对,就会判定盗链,这会触发拒绝访问的
    一般做字典的update 更新一下请求页面来着何处,
  • fanvalen2021-5-6
    引用6
    fanvalen 发表于 2021-5-6 19:49
    刚开始调试的还可以显示,
    再运行时估计楼上也在运行然后//将用户正常页面写入到
    估计是被检测了,还有就 ...

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

    学习学习出现这种情况,换个ip,又能开始了,但还是到15条就断了,这种情况有必要用代{过}{滤}理池?
  • fanvalen2021-5-6
    引用8
    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-Hang2021-5-7
    引用9
    问一下,是不是可以检测到这种问题重新注入登录信息
  • 游客
    10
返回