我想使用lxml和cssselect从选择下拉框中获取/刮取数据。如何使用cssselect和lxml从选择下拉菜单中获取选项值?
我已经尝试了一些东西,搜查,没有运气迄今网:
所以以下或类似的代码是一个网页,我刮:使用以下cssselect声明
<select id="attribute501" class="required-entry super-attribute-select" name="super_attribute[501]">
<option value="">Choose an Option...</option>
<option value="33">5</option>
<option value="31">10</option>
</select>
:
css_sel_price_dd = 'html body.catalog-product-view div.wrapper div.page div.main-container div.main div.col-main div.product-view div.product-essential form div.product-shop select'
pack_size_obj = root.cssselect(css_sel_price_dd)
print 'This strain has a drop down select box for different pack sizes: '
print pack_size_obj
pack_size = pack_size_obj[0].text_content().encode('utf-8').strip()
print 'Pack Size: ' + pack_size
产生以下结果:
This strain has a drop down select box for different pack sizes:
[<SelectElement 10e77d590 name='super_attribute[501]'>]
Pack Size: Choose an Option...
但到目前为止,我无法获得访问来自其他选项的文本值,即5,10名来自
<option value="33">5</option>
<option value="31">10</option>
- 我已经尝试添加选项的CSS路径和不同的东西,但能“T似乎猜到语法和不能找到什么...
仍然没有工作 - 这里是实际的代码片段与URL等
import lxml.html
import requests
import csv
user_agent = {'User-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/536.26.17 (KHTML, like Gecko) Version/6.0.2 Safari/536.26.17'}
# Open a session
s = requests.session()
s.get('http://www.seedsman.com/en/cannabis-seeds', headers = user_agent)
css_sel_price_dd = '.product-shop select option'
open_seed_url = 'http://www.seedsman.com/en/amsterdam-mist-feminised-seeds'
print 'From the following URL: ' + open_seed_url
r = s.get(open_seed_url, headers = user_agent)
r_encoding = r.encoding
print 'encoding type of r:'
print r_encoding
myhtml = r.text # gives us a unicode string work with unicode and encode at the end when have piece of data we want
print myhtml.encode('utf-8')
root = lxml.html.fromstring(myhtml)
pack_size_obj = root.cssselect(css_sel_price_dd)
print pack_size_obj
for opt in pack_size_obj:
print '{0} : {1}'.format(opt.get('value'), opt.text)
希望有人能看到出了什么问题?
回报:
From the following URL: http://www.seedsman.com/en/amsterdam-mist-feminised-seeds
encoding type of r: UTF-8
** HTML removed for brevity **
[<Element option at 0x1108dcbf0>]
None : Choose an Option...
[Finished in 3.9s]
谢谢您的回答 - 我使用python 2.7在OSX上,无法得到这个工作?!我在最后一行发现错误 - 错误声称是缩进错误,但事实并非如此。上面的代码应该与我的python版本一起工作吗? – 2013-04-30 14:17:14
另外,当我修改我的cssselect代码(通过添加选项)后打印列表css_sel_price_dd - 我仍然得到一个项目的列表,这就是为什么我认为这是最初不工作之前,我问这个问题。那么你能解释一下假设上面的工作正在发生什么,谢谢! – 2013-04-30 14:19:37
应该没有缩进错误,请检查您是否正确粘贴。至于结果,你的选择器中可能有一个错误,而你正在寻找别的东西而不是你正在寻找的东西。如果您可以将网址发布到该页面,我可以验证它。 – andrean 2013-04-30 14:27:18