【发布时间】:2018-07-15 09:10:39
【问题描述】:
我的网页结构如下:
<div class="l_post j_l_post l_post_bright "...>
...
<div class="j_lzl_c_b_a core_reply_content">
<li class="lzl_single_post j_lzl_s_p first_no_border" ...>
<div class="lzl_cnt">
content
</div>
</li>
<li class="lzl_single_post j_lzl_s_p first_no_border" ...>
...
</li>
</div>
</div>
<div class="l_post j_l_post l_post_bright "...>
...(contain content, same as above)
</div>
...
目前我可以像这样一步一步选择所有内容:
for i in driver.find_elements_by_xpath('//*[@class="lzl_cnt"]'):
print(i.text)
但正如您所见,网页由重复的块组成,其中包含我需要的 内容,因此我想单独获取这些内容以及与这些重复内容不同的其他信息块(<div class="l_post j_l_post l_post_bright "...>...</div>),另外,我希望将<li class ="lzl_single_post"...>中的那些内容分开,以便我以后更容易处理这些内容。我试过这个:
items = []
# get each blocks
for sel in driver.find_elements_by_xpath('//div[@class="l_post j_l_post l_post_bright "]'):
name = sel.find_element_by_css_selector('.d_name').text
try: content = sel.find_element_by_css_selector('.j_d_post_content').text
except: content = '',
try:
reply = []
# get each post within specific block
for i in sel.find_elements_by_xpath('//*[@class="lzl_cnt"]'):
reply.append(i.text)
except: reply = []
items.append({'name': name, 'content': content, 'reply': reply})
但结果显示,每次外部 for 循环运行时,我都会收到网页上的所有回复,而不是我想要的每个单独块的一组回复
有什么建议吗?
【问题讨论】:
标签: html xpath selenium-webdriver css-selectors