鱼C论坛

 找回密码
 立即注册
查看: 1266|回复: 7

爬虫

[复制链接]
发表于 2021-8-9 19:18:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求助下各位大佬,下面的这个问题怎么解决,貌似是不让我用代理ip



import requests
import bs4

url = r"https://search.sciencemag.org/?searchTerm=psychology&order=newest&limit=textFields&pageSize=10&startDate=2015-01-01&endDate=2021-09-08&articleTypes=Research%20and%20reviews&source=sciencemag%7CScience"
header = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"}
response = requests.get(url, headers = header)
soup = bs4.BeautifulSoup(response.text, "html.parser")




---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_62048/3130801728.py in <module>
      4 url = r"https://search.sciencemag.org/?searchTerm=psychology&order=newest&limit=textFields&pageSize=10&startDate=2015-01-01&endDate=2021-09-08&articleTypes=Research%20and%20reviews&source=sciencemag%7CScience"
      5 header = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"}
----> 6 response = requests.get(url, headers = header)
      7 soup = bs4.BeautifulSoup(response.text, "html.parser")
      8 soup

C:\ProgramData\Anaconda3\lib\site-packages\requests\api.py in get(url, params, **kwargs)
     74
     75     kwargs.setdefault('allow_redirects', True)
---> 76     return request('get', url, params=params, **kwargs)
     77
     78

C:\ProgramData\Anaconda3\lib\site-packages\requests\api.py in request(method, url, **kwargs)
     59     # cases, and look like a memory leak in others.
     60     with sessions.Session() as session:
---> 61         return session.request(method=method, url=url, **kwargs)
     62
     63

C:\ProgramData\Anaconda3\lib\site-packages\requests\sessions.py in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)
    540         }
    541         send_kwargs.update(settings)
--> 542         resp = self.send(prep, **send_kwargs)
    543
    544         return resp

C:\ProgramData\Anaconda3\lib\site-packages\requests\sessions.py in send(self, request, **kwargs)
    653
    654         # Send the request
--> 655         r = adapter.send(request, **kwargs)
    656
    657         # Total elapsed time of the request (approximately)

C:\ProgramData\Anaconda3\lib\site-packages\requests\adapters.py in send(self, request, stream, timeout, verify, cert, proxies)
    437         try:
    438             if not chunked:
--> 439                 resp = conn.urlopen(
    440                     method=request.method,
    441                     url=url,

C:\ProgramData\Anaconda3\lib\site-packages\urllib3\connectionpool.py in urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)
    694             )
    695             if is_new_proxy_conn and http_tunnel_required:
--> 696                 self._prepare_proxy(conn)
    697
    698             # Make the request on the httplib connection object.

C:\ProgramData\Anaconda3\lib\site-packages\urllib3\connectionpool.py in _prepare_proxy(self, conn)
    962             conn.tls_in_tls_required = True
    963
--> 964         conn.connect()
    965
    966     def _new_conn(self):

C:\ProgramData\Anaconda3\lib\site-packages\urllib3\connection.py in connect(self)
    357         if self._is_using_tunnel():
    358             if self.tls_in_tls_required:
--> 359                 conn = self._connect_tls_proxy(hostname, conn)
    360                 tls_in_tls = True
    361

C:\ProgramData\Anaconda3\lib\site-packages\urllib3\connection.py in _connect_tls_proxy(self, hostname, conn)
    498         # If no cert was provided, use only the default options for server
    499         # certificate validation
--> 500         return ssl_wrap_socket(
    501             sock=conn,
    502             ca_certs=self.ca_certs,

C:\ProgramData\Anaconda3\lib\site-packages\urllib3\util\ssl_.py in ssl_wrap_socket(sock, keyfile, certfile, cert_reqs, ca_certs, server_hostname, ssl_version, ciphers, ssl_context, ca_cert_dir, key_password, ca_cert_data, tls_in_tls)
    451         )
    452     else:
--> 453         ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls)
    454     return ssl_sock
    455

C:\ProgramData\Anaconda3\lib\site-packages\urllib3\util\ssl_.py in _ssl_wrap_socket_impl(sock, ssl_context, tls_in_tls, server_hostname)
    493         return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
    494     else:
--> 495         return ssl_context.wrap_socket(sock)

C:\ProgramData\Anaconda3\lib\ssl.py in wrap_socket(self, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname, session)
    498         # SSLSocket class handles server_hostname encoding before it calls
    499         # ctx._wrap_socket()
--> 500         return self.sslsocket_class._create(
    501             sock=sock,
    502             server_side=server_side,

C:\ProgramData\Anaconda3\lib\ssl.py in _create(cls, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname, context, session)
    995                                  "client mode")
    996         if context.check_hostname and not server_hostname:
--> 997             raise ValueError("check_hostname requires server_hostname")
    998
    999         kwargs = dict(

ValueError: check_hostname requires server_hostname
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-10 07:50:33 | 显示全部楼层
关系统代理,用代理代码访问
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-10 08:17:33 | 显示全部楼层
我不知道你的是什么问题,因为我运行你的这段代码好好的。可能是你的python库的版本有问题,爬一下其他网站试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-10 10:36:20 | 显示全部楼层
1q23w31 发表于 2021-8-10 07:50
关系统代理,用代理代码访问

翻那个啥了,关了系统代理貌似就不能翻了。
之前使用谷歌学术也出现过这个问题,所以想问下遇见这种翻啥的情况,怎么解决这种问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-10 10:36:52 | 显示全部楼层
King丨小义 发表于 2021-8-10 08:17
我不知道你的是什么问题,因为我运行你的这段代码好好的。可能是你的python库的版本有问题,爬一下其他网站 ...

翻那个啥了,关了系统代理貌似就不能翻了。
之前使用谷歌学术也出现过这个问题,所以想问下遇见这种翻啥的情况,怎么解决这种问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-10 10:58:43 | 显示全部楼层
kygschp 发表于 2021-8-10 10:36
翻那个啥了,关了系统代理貌似就不能翻了。
之前使用谷歌学术也出现过这个问题,所以想问下遇见这种翻啥 ...

这个网站国内能打开呀?
你要爬啥?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-10 10:59:29 | 显示全部楼层
kygschp 发表于 2021-8-10 10:36
翻那个啥了,关了系统代理貌似就不能翻了。
之前使用谷歌学术也出现过这个问题,所以想问下遇见这种翻啥 ...

这个网站能打开,代码没问题,你要抓取什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-11 09:52:20 | 显示全部楼层
1q23w31 发表于 2021-8-10 10:59
这个网站能打开,代码没问题,你要抓取什么?

哦,这个网站在国内的确可以打开,之前没注意到。

我主要还是想请教下,爬谷歌学术这种需要翻*的网站,出现这种问题时怎么解决呢。

import requests
import bs4

url = r"https://scholar.google.com.hk/scholar?hl=zh-CN&as_sdt=0%2C5&q=self&btnG="
header = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"}
response = requests.get(url, headers = header)
soup = bs4.BeautifulSoup(response.text, "html.parser")

targets = soup.find_all("h3", class_="gs_rt")

for each in targets:
    print(each.a.text)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-8 06:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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