小编Mar*_*son的帖子

如何使用Python的Requests模块"登录"网站?

我试图使用Python中的Requests模块发布登录网站的请求,但它并没有真正起作用.我是新手...所以我无法弄清楚我是否应该创建我的用户名和密码cookie或我找到的某种类型的HTTP授权(??).

from pyquery import PyQuery
import requests

url = 'http://www.locationary.com/home/index2.jsp'
Run Code Online (Sandbox Code Playgroud)

所以现在,我想我应该使用"post"和cookies ....

ck = {'inUserName': 'USERNAME/EMAIL', 'inUserPass': 'PASSWORD'}

r = requests.post(url, cookies=ck)

content = r.text

q = PyQuery(content)

title = q("title").text()

print title
Run Code Online (Sandbox Code Playgroud)

我有一种感觉,我做饼干的事情错了......我不知道.

如果它没有正确登录,主页的标题应该出现在"Locationary.com",如果是,它应该是"主页".

如果您可以向我解释有关请求和cookie的一些事情并帮助我解决这个问题,我将非常感激.:d

谢谢.

......它还没有真正起作用.好的......所以这就是主页HTML在您登录之前所说的内容:

</td><td><img src="http://www.locationary.com/img/LocationaryImgs/icons/txt_email.gif">    </td>
<td><input class="Data_Entry_Field_Login" type="text" name="inUserName" id="inUserName"  size="25"></td>
<td><img src="http://www.locationary.com/img/LocationaryImgs/icons/txt_password.gif"> </td>
<td><input  class="Data_Entry_Field_Login"  type="password" name="inUserPass"     id="inUserPass"></td>
Run Code Online (Sandbox Code Playgroud)

所以我认为我做得对,但输出仍然是"Locationary.com"

第二次编辑:

我希望能够保持登录状态很长时间,每当我要求域名下的网页,我希望要显示的内容,就好像我在被记录.

python pyquery python-requests

82
推荐指数
6
解决办法
18万
查看次数

如何使用Google Places API获取城市或国家/地区的所有地点(或特定类型的地点,如餐馆)?

我试图找到所有"餐馆"或"保险机构",例如,在城市或国家.好吧,也许一个国家太广泛但主要是大城市.

我正在使用Google Places API和python,但我发现您只能使用"radius"参数或"rankby = distance".问题在于,根据文档,我相信每个查询只能在3个页面上返回20个结果,或者60个结果(如果我错了,请纠正我).因此,如果我想找到纽约的所有餐厅,我必须从中心或其他地方开始并设置"rankby = distance",这样它就能在给定半径范围内得到60个最接近的结果.但后来我不知道我的下一个查询是什么......

任何想法如何去做?

google-places-api

31
推荐指数
1
解决办法
3万
查看次数

Selenium和Python找到元素和文本?

当我去某个网页时,我试图找到某个元素和一段文字:

<span class="Bold Orange Large">0</span>
Run Code Online (Sandbox Code Playgroud)

这不起作用:( 它给出了复合类名称的错误......)

elem = browser.find_elements_by_class_name("Bold Orange Large")
Run Code Online (Sandbox Code Playgroud)

所以我试过这个:( 但我不确定它是否有效,因为我真的不明白在selenium中做css选择器的正确方法......)

elem = browser.find_elements_by_css_selector("span[class='Bold Orange Large']")
Run Code Online (Sandbox Code Playgroud)

一旦找到span元素,我想找到内部的数字(内容).

num = elem.(what to put here??)
Run Code Online (Sandbox Code Playgroud)

任何有关CSS选择器,类名和查找元素文本的帮助都会很棒!

谢谢.

哦! 而我的另一个问题是,这些精确的span元素有多个但内部有不同的数字.我该怎么处理?

python selenium webdriver

15
推荐指数
1
解决办法
4万
查看次数

使用 Selenium 和 Python 获取子元素

我有这个 HTML:

<div id = "d029384">
<span>......</span>
</div>
Run Code Online (Sandbox Code Playgroud)

和我的代码:

elem = browser.find_elements_by_xpath("//div[contains(@id,'d')]")
Run Code Online (Sandbox Code Playgroud)

除了 div 不适用于我的程序正在执行的操作。我需要更具体。我需要 span 元素。我怎样才能得到跨度元素?每个 div 都有一个 id,它是 d + 数字。我需要这些数字,所以这就是我使用 xpath 的原因,但我不知道如何使最终的 WebElement 指向跨度而不是 div。

有人知道吗?

python selenium

7
推荐指数
2
解决办法
2万
查看次数

使用正则表达式(或其他python模块)来比较文本/字符?

假设我的程序收到一个输入,例如一串具有任何类型字符的字符.例如,'Bob's Bagel Shop'.然后它得到另一个字符串,上面写着'Fred's Bagel Store'.如何在python中使用正则表达式或其他模块来比较这些并让我的程序告诉我,如果字符串中的任何字符串中的至少5个(或任何我想要的数字)是相同,但是所有字符在相同的顺序中,比如'Bagel'这个词?

谢谢.

python regex string-matching

6
推荐指数
1
解决办法
348
查看次数

如何使用 Beautiful Soup 查找 id 更改的标签?

我在 Python 中使用 Beautiful Soup。

这是一个示例网址:

http://www.locationary.com/place/en/US/Ohio/Middletown/McDonald%27s-p1013254580.jsp

在 HTML 中,有一堆标签,我可以指定要查找哪些标签的唯一方法是使用它们的 id。我唯一想找到的是电话号码。标签看起来像这样:

<td class="dispTxt" id="value_xxx_c_1_f_8_a_134242498">5134231582</td> 
Run Code Online (Sandbox Code Playgroud)

我访问了同一网站上的其他 URL,每次都发现电话号码标签的 ID 几乎相同。始终保持不变的部分是:

'value_xxx_c_1_f_8_a_'
Run Code Online (Sandbox Code Playgroud)

但是,之后的数字总是会改变。有没有办法让 Beautiful Soup 查找 id 的一部分并匹配它,让另一部分像正则表达式一样是数字?

另外,一旦我拿到标签,我就想知道……如何在不使用正则表达式的情况下提取电话号码?我不知道 Beautiful Soup 是否可以做到这一点,但它可能比正则表达式更简单。

python regex beautifulsoup

5
推荐指数
1
解决办法
2078
查看次数

在python中下载html?

我试图在您单击浏览器中的链接时下载通过javascript操作请求的页面的html.我可以下载第一页,因为它有一个通用的URL:

http://www.locationary.com/stats/hotzone.jsp?hz=1
Run Code Online (Sandbox Code Playgroud)

但是页面底部有一些链接是数字(1到10).因此,如果您点击一个,它会转到,例如,第2页:

http://www.locationary.com/stats/hotzone.jsp?ACTION_TOKEN=hotzone_jsp$JspView$NumericAction&inPageNumber=2
Run Code Online (Sandbox Code Playgroud)

当我将该URL放入我的程序并尝试下载html时,它会在网站上显示不同页面的html,我认为它是主页.

如何获取使用javascript的此URL的html以及何时没有特定的URL?

谢谢.

码:

import urllib
import urllib2
import cookielib
import re

URL = ''

def load(url):

    data = urllib.urlencode({"inUserName":"email", "inUserPass":"password"})
    jar = cookielib.FileCookieJar("cookies")
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))
    opener.addheaders.append(('User-agent', 'Mozilla/5.0 (Windows NT 6.1; rv:13.0) Gecko/20100101 Firefox/13.0.1'))
    opener.addheaders.append(('Referer', 'http://www.locationary.com/'))
    opener.addheaders.append(('Cookie','site_version=REGULAR'))
    request = urllib2.Request("https://www.locationary.com/index.jsp?ACTION_TOKEN=tile_loginBar_jsp$JspView$LoginAction", data)
    response = opener.open(request)
    page = opener.open("https://www.locationary.com/index.jsp?ACTION_TOKEN=tile_loginBar_jsp$JspView$LoginAction").read()

    h = response.info().headers
    jsid = re.findall(r'Set-Cookie: (.*);', str(h[5]))
    data = urllib.urlencode({"inUserName":"email", "inUserPass":"password"})
    jar = cookielib.FileCookieJar("cookies")
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))
    opener.addheaders.append(('User-agent', 'Mozilla/5.0 (Windows NT 6.1; rv:13.0) Gecko/20100101 Firefox/13.0.1'))
    opener.addheaders.append(('Referer', 'http://www.locationary.com/')) …
Run Code Online (Sandbox Code Playgroud)

html python

5
推荐指数
1
解决办法
511
查看次数