我试图使用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"
第二次编辑:
我希望能够保持登录状态很长时间,每当我要求域名下的网页,我希望要显示的内容,就好像我在被记录.
我试图找到所有"餐馆"或"保险机构",例如,在城市或国家.好吧,也许一个国家太广泛但主要是大城市.
我正在使用Google Places API和python,但我发现您只能使用"radius"参数或"rankby = distance".问题在于,根据文档,我相信每个查询只能在3个页面上返回20个结果,或者60个结果(如果我错了,请纠正我).因此,如果我想找到纽约的所有餐厅,我必须从中心或其他地方开始并设置"rankby = distance",这样它就能在给定半径范围内得到60个最接近的结果.但后来我不知道我的下一个查询是什么......
任何想法如何去做?
当我去某个网页时,我试图找到某个元素和一段文字:
<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元素有多个但内部有不同的数字.我该怎么处理?
我有这个 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。
有人知道吗?
假设我的程序收到一个输入,例如一串具有任何类型字符的字符.例如,'Bob's Bagel Shop'.然后它得到另一个字符串,上面写着'Fred's Bagel Store'.如何在python中使用正则表达式或其他模块来比较这些并让我的程序告诉我,如果字符串中的任何字符串中的至少5个(或任何我想要的数字)是相同的,但是所有字符都在相同的顺序中,比如'Bagel'这个词?
谢谢.
我在 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 是否可以做到这一点,但它可能比正则表达式更简单。
我试图在您单击浏览器中的链接时下载通过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)