想使用Selenium来抓取帖子吗?

时间:2019-09-09 11:17:51

标签: python selenium web-crawler

点击列表页面上的链接(随机) 看到内容3秒钟后 我想重复另一次随机点击。

查看帖子的内容,而不是收集目的,然后返回列表以查看其他帖子的内容...

这是一个重复的任务。

下面的代码有效,但是我似乎无法随机单击列表

from time import sleep
from selenium import webdriver


driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get('/test')

list_of_links = driver.find_elements_by_xpath('//a[@class="re_href"]')

list_of_linktext = []

for link in list_of_links:
    list_of_linktext.append(link.text)


for linktext in list_of_linktext:
    element = driver.find_element_by_link_text(linktext)
    driver.execute_script("arguments[0].click();", element)
    sleep(3)
    driver.back()
    sleep(3)

html

<table>
    <tbody>
        <tr>
            <td class="num">512</td>
            <td class="thumb"><img src="test.jpg"></td>
            <td class="subject">
                <a href="/article/band/13538" id="re_href" class="re_href">Title</a>
            </td>
            <td class="writer"></td>
            <td class="check"></td>
        </tr>
        <tr>
            <td class="num">512</td>
            <td class="thumb"><img src="test2.jpg"></td>
            <td class="subject">
                <a href="/article/band/14230" id="re_href" class="re_href">Title</a>
            </td>
            <td class="writer"></td>
            <td class="check"></td>
        </tr>
.
.
.
    </tbody>
</table>

1 个答案:

答案 0 :(得分:2)

尝试以下代码,它将单击每个链接。

driver.get('/test')

list_of_links = driver.find_elements_by_xpath('//a[@class="re_href"]')

for linktext in range(len(list_of_links)):
    list_of_links = driver.find_elements_by_xpath('//a[@class="re_href"]')

    element =list_of_links[linktext]
    driver.execute_script("arguments[0].click();", element)
    sleep(3)
    driver.back()
    sleep(3)

已编辑:

将下面的xpath用于表中的所有链接。

driver.get('/testl')

list_of_links = driver.find_elements_by_xpath("//table//tr//td[@class='subject']/a")

for linktext in range(len(list_of_links)):
    list_of_links = driver.find_elements_by_xpath("//table//tr//td[@class='subject']/a")

    element =list_of_links[linktext]
    driver.execute_script("arguments[0].click();", element)
    sleep(3)
    driver.back()
    sleep(3)