【问题标题】:fetch data from urllib2 or request in Python从 urllib2 获取数据或在 Python 中请求
【发布时间】:2016-05-26 03:17:16
【问题描述】:

我必须从 python 获取搜索结果。

假设以下是我正在搜索heart关键字的目标网址。

http://journals.aps.org/search/results?clauses=[{%22operator%22:%22AND%22,%22field%22:%22all%22,%22value%22:%22heart%22}]&sort=relevance

但是urllib2 和request 的搜索结果没有出现。

处理以下代码:

request

>>> import requests
>>> url = "http://journals.aps.org/search/results"
>>> payload = {"clauses": [{"operator":"AND","field":"all","value":"heart"}], "sort": "relevance"}
>>> r = requests.get(url, params=payload)
>>> b = r.text

urllib2

>>> import urllib2
>>> search_url ="http://journals.aps.org/search/results?clauses=%5B%7B%22operator%22%3A%22AND%22%2C%22field%22%3A%22all%22%2C%22value%22%3A%22heart%22%7D%5D&sort=relevance"
>>> 
>>> req = urllib2.Request(search_url, headers={'User-Agent' : "Mozilla/5.0"})
>>> f1 = urllib2.urlopen(req)

上面的脚本不能得到正确的结果。

【问题讨论】:

    标签: python url request urllib2


    【解决方案1】:

    从您的问题中不清楚您卡在哪里,这两个示例都对我有用。您期望的“正确结果”是什么?

    >>> import requests
    >>> url = "http://journals.aps.org/search/results"
    >>> payload = {"clauses": [{"operator":"AND","field":"all","value":"heart"}], "sort": "relevance"}
    >>> r = requests.get(url, params=payload)
    >>> print r.text[:40]
    <!DOCTYPE html><!--[if IE 8]><html class
    >>>>
    

    还有:

    >>> import urllib2
    >>> search_url ="http://journals.aps.org/search/results?
    >>> clauses=%5B%7B%22operator%22%3A%22AND%22%2C%22field%22%3A%22all%22%2C%22value%22%3A%22heart%22%7D%5D&sort=relevance"
    >>> req = urllib2.Request(search_url, headers={'User-Agent' : "Mozilla/5.0"})
    >>> f1 = urllib2.urlopen(req)
    >>> print f1.read()[:40]
    <!DOCTYPE html><!--[if IE 8]><html class
    >>> 
    

    【讨论】:

    • 两个示例都有效,但示例返回的内容与我们在 Bowers 上看到的内容不同。
    • 你能说得更具体点吗?您返回的内容与您在浏览器中看到的内容有什么不同?如果原始 HTML 存在差异,这听起来像是您正在访问的网站的问题,而不是适合 Stack Overflow 的代码问题。如果您希望返回呈现的 HTML,那么 Python 可能不适合您。
    猜你喜欢
    • 1970-01-01
    • 2015-10-07
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 2016-06-17
    相关资源
    最近更新 更多