使用LXML在Python中进行Web Scraping

时间:2017-01-31 07:39:01

标签: python html xpath web-scraping lxml

我尝试使用python和LXML将文本从页面复制到变量到web scrape。我能够打印第一个标签的文本并进一步选择命名标签(框架名称=&#34; Side&#34;在屏幕截图中)但我在选择时更加具体。< / p>

这是我试图躲过的来源:http://imgur.com/a/wwLn0

到目前为止,我已获得以下代码:

 import requests
from lxml import html

login = {
    "str_Username_req": "login", 
    "str_Password_req": "login", 
}

headers= {"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36"}

session_requests = requests.session()

login_url = "https://sirswebapps.cbe.ab.ca/Homelogic/"
result = session_requests.get(login_url)

result = session_requests.post(
    login_url, 
    data = payload,
        headers=headers
    # headers = dict(referer=login_url)
)

url = 'https://sirswebapps.cbe.ab.ca/Homelogic/spta.asp'
result = session_requests.get(
    url,
        headers=headers
    # headers = dict(referer = url),
)

tree = html.fromstring(result.content)

bucket_elems = tree.xpath('/html/head/title/')

print (bucket_elems)

似乎一旦登录正常,我就可以让标题返回正常,但是一旦我要求扩展PAST标题我得到[]返回。如果我将tree.xpath值更改为(&#39; // frame [@name =&#34; Side&#34;]&#39;),只关注名为&#34; Side&#34;的帧。代码返回[<Element frame at 0x4735db0>]。但是一旦我通过添加/ html / head扩展过去,甚至在帧名称部分之后添加/ text(),我得到一个[]返回。如何访问名为side的框架内的东西?我认为这可能与它在命名标签中的多个级别或者有新标签这一事实有关,但我还不完全确定。谢谢!

PS:我有一个有效的登录网站,我的意图不是恶意的,我试图创建一个简化的网站程序。

0 个答案:

没有答案