Python> Selenium + CSV:如何从网站抓取并将2列写到CSV?

时间:2019-12-28 16:03:45

标签: python selenium csv web-scraping webdriver

需要对执行以下操作的某些代码进行一些故障排除:

  

1)从网页中抓取链接
2)从网页中抓取链接的文字   同一页

在提取链接和将其写为单个列方面取得了一些成功:

elements = driver.find_elements_by_xpath("//a[@href]")
with open('csvfile01.csv', "w", newline='') as output:
    writer = csv.writer(output)
    for element in elements:
        writer.writerow([element.get_attribute("href")])

不幸的是,当涉及到:
1)获取链接的“文本” ,然后
2)将其导出为单独的列...
3)抓取网页的特定部分以获取链接,例如在表格(“ td”)或div部分中

现在的代码:

from selenium import webdriver
import time
import csv

driver = webdriver.Chrome()


driver.get("https://en.wikipedia.org/wiki/Main_Page")
time.sleep(5)

columns = ['text', 'link']

e1 = driver.find_element_by_css_selector("a")
e2 = driver.find_elements_by_xpath("//a[@href]")
elements = zip(e1,e2)


time.sleep(5)

with open('csvfile01.csv', "w", newline='') as output:

    writer = csv.writer(output)

    for element in elements:
        writer.writerow(columns)
        writer.writerows(elements)

driver.quit()

任何建议将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

就获取文本而言,您可以执行.text,并且考虑到它只是“ a”,您的css选择器剂量也似乎是正确的,要获取xpath / css选择器,只需检查元素并右键单击它,然后单击复制后,您会得到要复制的东西的列表,我使用硒并不多,但是当我使用它时,我在xpath中注意到只有1个数字会发生变化(例如,如果它是代理表),所以我只定义了一个计数器并循环增加