Shuranima 发表于 2020-6-17 22:43:25

问题已解决~

本帖最后由 Shuranima 于 2020-7-15 23:06 编辑

问题已解决~

suchocolate 发表于 2020-6-18 11:04:30

本帖最后由 suchocolate 于 2020-6-18 11:20 编辑

1.Next page函数改成:
def Next_page(url):
    html = url_open(url).decode('utf-8')
    b = re.findall(r'page=(.*?)" aria-label="Next"', html)
    ret = 'https://www.7yip.cn/free/?action=china&page=' + b
    return ret

2.Use_agent函数里使用install_opener不是全局的,传不到另外一个函数url_open里,可以不用openr,把【代理】和【代理结束】之间的代码删掉,函数可以照常工作。如果一定要用opener,我建议直接用opener.open,不要调用url_open函数。

Twilight6 发表于 2020-6-18 08:37:44

你在 Get_ip_list(): 的 return 前面加个 print(url)会发现链接有问题

Shuranima 发表于 2020-6-18 12:04:22

Twilight6 发表于 2020-6-18 08:37
你在 Get_ip_list(): 的 return 前面加个 print(url)会发现链接有问题

https://share.weiyun.com/thJWSJoY
我这儿显示链接没问题呀。

Shuranima 发表于 2020-6-18 12:59:56

suchocolate 发表于 2020-6-18 11:04
1.Next page函数改成:




还有一个问题,为什么我用User_agent传入http协议的返回成功https却失败了啊
    html = Use_agent('http://jandan.net/ooxx').decode('utf-8')
    print(html)
    html = Use_agent('https://www.7yip.cn/free/?action=china&page=1').decode('utf-8')
    print(html)

后一个报错:
Traceback (most recent call last):
File "C:\Users\Shura\Desktop\python\OOXX\爬虫之IP代理.py", line 46, in <module>
    html = Use_agent('https://www.7yip.cn/free/?action=china&page=1').decode('utf-8')
File "C:\Users\Shura\Desktop\python\OOXX\爬虫之IP代理.py", line 42, in Use_agent
    return urllib.request.urlopen(req).read()
File "C:\Users\Shura\AppData\Local\Programs\Python\Python38\lib\urllib\request.py", line 222, in urlopen
    return opener.open(url, data, timeout)
File "C:\Users\Shura\AppData\Local\Programs\Python\Python38\lib\urllib\request.py", line 525, in open
    response = self._open(req, data)
File "C:\Users\Shura\AppData\Local\Programs\Python\Python38\lib\urllib\request.py", line 542, in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
File "C:\Users\Shura\AppData\Local\Programs\Python\Python38\lib\urllib\request.py", line 502, in _call_chain
    result = func(*args)
File "C:\Users\Shura\AppData\Local\Programs\Python\Python38\lib\urllib\request.py", line 806, in <lambda>
    meth(r, proxy, type))
File "C:\Users\Shura\AppData\Local\Programs\Python\Python38\lib\urllib\request.py", line 810, in proxy_open
    proxy_type, user, password, hostport = _parse_proxy(proxy)
File "C:\Users\Shura\AppData\Local\Programs\Python\Python38\lib\urllib\request.py", line 771, in _parse_proxy
    scheme, r_scheme = _splittype(proxy)
File "C:\Users\Shura\AppData\Local\Programs\Python\Python38\lib\urllib\parse.py", line 1008, in _splittype
    match = _typeprog.match(url)
TypeError: expected string or bytes-like object

suchocolate 发表于 2020-6-18 13:04:48

Shuranima 发表于 2020-6-18 12:59
还有一个问题,为什么我用User_agent传入http协议的返回成功https却失败了啊




之前的问题解决了?
现在的代码是什么?

Shuranima 发表于 2020-6-18 13:22:54

suchocolate 发表于 2020-6-18 13:04
之前的问题解决了?
现在的代码是什么?

大概是install_opener 这个会安装 opener 把它作为全局的,但是每一次调用urlopen都会来安装这个opener对象,但是呢opener的作用域在Use_agent这个函数里,所以调用urlopen的时候内部会发生错误,解决方法应该是创建全局的opener,因为我才接触所以不是很了解所以百度看了看 大概的意思就是这样,关于哪个Next_page函数我自己代码上实现没出现这个问题,但是我贴出的代码我试运行了一下却出问题了 返回的链接不对劲。
页: [1]
查看完整版本: 问题已解决~