首页 \ 问答 \ pycharm写爬虫 怎么看请求头

pycharm写爬虫 怎么看请求头

更新时间:2023-11-14 11:11

最满意答案

urllib2 默认会使用环境变量 http_proxy 来设置 HTTP Proxy。如果想在程序中明确控制 Proxy 而不受环境变量的影响,可以使用下面的方式:
  import urllib2
  enable_proxy = True
  proxy_handler = urllib2.ProxyHandler({"http" : 'IP:8080'})
  null_proxy_handler = urllib2.ProxyHandler({})
  if enable_proxy:
  opener = urllib2.build_opener(proxy_handler)
  else:
  opener = urllib2.build_opener(null_proxy_handler)
  urllib2.install_opener(opener)
  这里要注意的一个细节,使用 urllib2.install_opener() 会设置 urllib2 的全局 opener 。这样后面的使用会很方便,但不能做更细粒度的控制,比如想在程序中使用两个不同的 Proxy 设置等。比较好的做法是不使用 install_opener 去更改全局的设置,而只是直接调用 opener 的 open 方法代替全局的 urlopen 方法。

其他回答

本帖最后由 crifan 于 2012-11-07 00:18 编辑

表面现象看起来是,你发送的地址给google服务器,但是此地址有问题,导致人家返回你错误,说是:
http error 302: the http server returned a redirect error that would lead to an infinite loop.

而此地址,看起来,你是从浏览器之类的地方,拷贝过来的。
但是,实际上,如果需要程序模拟此过程的话,需要找到此地址中的各种参数,即:
num=100
hl=zh-cn
newwindow=1
safe=strict
q=inurl%3aadmin_login.aspx
oq=inurl%3aadmin_login.aspx
gs_l=serp.3...125521.131943.0.132041.38.31.1.0.0.3.209.2367.23j3j1.27.0...0.0...1c.1.bvh-wnktkjg
中每个参数的值,是如何获得的,
然后再用程序去模拟过程,生成对应的参数,
然后才是去将此地址发送给人家的google的服务器,才能获得你所想要的结果的。

总之一句话,先要自己搞懂内部执行的过程,然后才是用程序模拟此过程。

相关问答

更多
  • b =a.read 要加括号。 import urllib2 url="http://www.ceve-market.org/api/market/type/18.xml" a=urllib2.urlopen(url) b=a.read() print b
  • 是的python3里面把两个库合并了,需要改程序,但是改的可能很复杂,也可能比较简单,具体要看程序。建议找找看有没有python3的版本或者找别的类似程序吧
  • urllib2 默认会使用环境变量 http_proxy 来设置 HTTP Proxy。如果想在程序中明确控制 Proxy 而不受环境变量的影响,可以使用下面的方式:   import urllib2   enable_proxy = True   proxy_handler = urllib2.ProxyHandler({"http" : 'IP:8080'})   null_proxy_handler = urllib2.ProxyHandler({})   if enable_proxy:   ope ...
  • 不幸的是,使用中的标准库模块堆栈(urllib2,httplib,套接字)的设计有点糟糕 - 在操作的关键点, HTTPConnection.connect (在httplib中)委托给socket.create_connection ,而socket.create_connection你在创建套接字实例sock和sock.connect调用之间没有“挂钩”,因为你在sock.bind之前插入sock.connect ,这就是你需要设置源IP的东西(我广泛传播因为没有以这种气密,过度封装的方式来设计抽象 - ...
  • 使用urlgrabber库。 这包括支持HTTP 1.1和keepalive的urllib2的HTTP处理程序: >>> import urllib2 >>> from urlgrabber.keepalive import HTTPHandler >>> keepalive_handler = HTTPHandler() >>> opener = urllib2.build_opener(keepalive_handler) >>> urllib2.install_opener(opener) >>> ...
  • 除了以下情况外,您很少需要使用的情况except: 。 这样做可以捕获任何异常,这可能很难调试,并捕获异常,包括SystemExit和KeyboardInterupt ,这可能会让您的程序烦人使用.. 最简单的,你会抓住urllib2.URLError : try: urllib2.urlopen("http://example.com", timeout = 1) except urllib2.URLError, e: raise MyException("There was an err ...
  • Python 3中的urllib2已分为几个模块 : urllib2模块已经拆分为Python 3中名为urllib.request和urllib.error几个模块。 将源代码转换为Python 3时, 2to3工具将自动调整导入。 urllib.request是您要用于发出HTTP请求的内容。 或者,开源Requests库提供了一个更简单,更清晰的API,用于在Python 2和3中发出HTTP请求。 urllib2 in Python 3 has been split into several mod ...
  • 这个问题可能是HTTPError的重复。 由于您的urlopen请求中没有指定User-Agent,因此您已被检测为bot。 我可以建议不那么痛苦的“请求”库吗? import requests from bs4 import BeautifulSoup #Specify some headers. urlopen uses "Python-urllib" as a header, which makes you seem like a bot. headers = {'User-Agent': 'Mozi ...
  • 我会用mechanize, http://wwwsearch.sourceforge.net/mechanize/ 你可以使用 #不处理刷新重定向br.set_handle_refresh(False) 其中'br'是与打开的网页相关联的变量。 Mechanize也有代理支持 I would use mechanize, http://wwwsearch.sourceforge.net/mechanize/ And you can use # Don't handle Refresh redirection ...
  • 处理AJAX Web表单通常需要使用selenium以便Python在安装了JavaScript引擎的情况下驱动真正的Web浏览器。 有些人也谈论phantomjs但我现在还不知道它的官方Python模块。 也可以看看: Linux上无头,可编写脚本的Firefox / Webkit? Handling AJAX web forms generally requires using selenium so that Python is driving a real web browser with a Ja ...

相关文章

更多

最新问答

更多
  • h2元素推动其他h2和div。(h2 element pushing other h2 and div down. two divs, two headers, and they're wrapped within a parent div)
  • 创建一个功能(Create a function)
  • 我投了份简历,是电脑编程方面的学徒,面试时说要培训三个月,前面
  • PDO语句不显示获取的结果(PDOstatement not displaying fetched results)
  • Qt冻结循环的原因?(Qt freezing cause of the loop?)
  • TableView重复youtube-api结果(TableView Repeating youtube-api result)
  • 如何使用自由职业者帐户登录我的php网站?(How can I login into my php website using freelancer account? [closed])
  • SQL Server 2014版本支持的最大数据库数(Maximum number of databases supported by SQL Server 2014 editions)
  • 我如何获得DynamicJasper 3.1.2(或更高版本)的Maven仓库?(How do I get the maven repository for DynamicJasper 3.1.2 (or higher)?)
  • 以编程方式创建UITableView(Creating a UITableView Programmatically)
  • 如何打破按钮上的生命周期循环(How to break do-while loop on button)
  • C#使用EF访问MVC上的部分类的自定义属性(C# access custom attributes of a partial class on MVC with EF)
  • 如何获得facebook app的publish_stream权限?(How to get publish_stream permissions for facebook app?)
  • 如何防止调用冗余函数的postgres视图(how to prevent postgres views calling redundant functions)
  • Sql Server在欧洲获取当前日期时间(Sql Server get current date time in Europe)
  • 设置kotlin扩展名(Setting a kotlin extension)
  • 如何并排放置两个元件?(How to position two elements side by side?)
  • 如何在vim中启用python3?(How to enable python3 in vim?)
  • 在MySQL和/或多列中使用多个表用于Rails应用程序(Using multiple tables in MySQL and/or multiple columns for a Rails application)
  • 如何隐藏谷歌地图上的登录按钮?(How to hide the Sign in button from Google maps?)
  • Mysql左连接旋转90°表(Mysql Left join rotate 90° table)
  • dedecms如何安装?
  • 在哪儿学计算机最好?
  • 学php哪个的书 最好,本人菜鸟
  • 触摸时不要突出显示表格视图行(Do not highlight table view row when touched)
  • 如何覆盖错误堆栈getter(How to override Error stack getter)
  • 带有ImageMagick和许多图像的GIF动画(GIF animation with ImageMagick and many images)
  • USSD INTERFACE - > java web应用程序通信(USSD INTERFACE -> java web app communication)
  • 电脑高中毕业学习去哪里培训
  • 正则表达式验证SMTP响应(Regex to validate SMTP Responses)