【问题标题】:Need help in scraping the img src from a website; below is my code在从网站上抓取 img src 时需要帮助;下面是我的代码
【发布时间】:2018-06-13 20:26:49
【问题描述】:

以下是我的网站抓取代码;它单击重定向到页面的表单。我需要从该页面中提取 [img] src url 并将其以文本形式导出到 csv 中。我使用下面的代码从 td 标记中提取内容。当我运行相同的代码时,它不起作用,因为 td 标签没有内容,只有一个 img 标签。任何帮助将不胜感激。我是网络抓取的新手。提前致谢。

browser.find_element_by_css_selector(".textinput[value='APPLY']").click()

#select_finder = "//tr[contains(text(), 'NB')]//a"
            select_finder = "//td[text()='NB')]/../td[2]/a"
            browser.find_element_by_css_selector(".content a").click()

            assert "Application Details" in browser.title
            file_data = []

            try:
                assert "Application Details" in browser.title

                enlargement = browser.find_element_by_xpath("/html/body/center/table[15]/tbody/tr[3]/td[2]/b").text
                enlargement_answer1 = browser.find_element_by_xpath("/html/body/center/table[15]/tbody/tr[4]/td[2]").text
                enlargement_answer2 = browser.find_element_by_xpath("/html/body/center/table[15]/tbody/tr[4]/td[3]").text
                enlargement_text = enlargement + enlargement_answer1 + enlargement_answer2

                considerations = browser.find_element_by_xpath("/html/body/center/table[16]/tbody/tr[4]/td[2]/b").text
                considerations_answer = browser.find_element_by_xpath("/html/body/center/table[16]/tbody/tr[4]/td[3]").text
                considerations_text = considerations + considerations_answer

                alteration = browser.find_element_by_xpath("/html/body/center/table[16]/tbody/tr[4]/td[6]/b").text
                alteration_answer = browser.find_element_by_xpath("/html/body/center/table[16]/tbody/tr[4]/td[7]").text
                alteration_text = alteration + alteration_answer

                units = browser.find_element_by_xpath("/html/body/center/table[16]/tbody/tr[5]/td[3]/b").text
                units_answer = browser.find_element_by_xpath("/html/body/center/table[15]/tbody/tr[5]/td[4]").text
                units_text = units + units_answer

                occupancy = browser.find_element_by_xpath("/html/body/center/table[16]/tbody/tr[6]/td[3]/b").text
                occupancy_answer = browser.find_element_by_xpath("/html/body/center/table[16]/tbody/tr[6]/td[4]").text
                occupancy_text = occupancy + occupancy_answer

                coo = browser.find_element_by_xpath("/html/body/center/table[16]/tbody/tr[7]/td[3]/b").text
                coo_answer = browser.find_element_by_xpath("/html/body/center/table[16]/tbody/tr[7]/td[4]").text
                coo_text = coo + coo_answer

                floors = browser.find_element_by_xpath("/html/body/center/table[16]/tbody/tr[8]/td[3]/b").text
                floors_answer = browser.find_element_by_xpath("/html/body/center/table[16]/tbody/tr[8]/td[4]").text
                floors_text = floors + floors_answer

            except (NoSuchElementException, AssertionError) as e:
                floors_text.append("No Zoning Characteristics Present")
                coo_text.append("n/a")
                occupancy_text.append("n/a")
                units_text.append("n/a")
                alteration_text.append("n/a")
                considerations_text.append("n/a")
                enlargement_text.append("n/a")


            with open('DOB.csv', 'a') as f:
                wr = csv.writer(f, dialect='excel')
                wr.writerow((block_number, lot_number, houseno, street, condo_text,
                             vacant_text, city_owned_text, file_data, floors_text, coo_text, occupancy_text, units_text, alteration_text,
                              considerations_text, enlargement_text ))

            browser.close()

【问题讨论】:

  • 你能添加显示你想要得到什么的html
  • 变更类型 1 @Ywapom 感谢您的快速回复。

标签: html python-3.x selenium-webdriver web-scraping beautifulsoup


【解决方案1】:

正如您所说,您是网络抓取的新手,我鼓励您阅读一下:http://selenium-python.readthedocs.io/locating-elements.html 您正在以不推荐的方式专门使用 XPath。

来自文档:“您可以使用 XPath 以绝对术语(不建议)定位元素,或者相对于具有 id 或 name 属性的元素。” 尝试使用其他定位器来获取您的图像。
例如:driver.find_element_by_css_selector("img[src='images/box_check.gif']")

【讨论】:

  • 感谢您的回复。该链接真的很有帮助,可能对我有用。我的一个疑问是,在我的原始代码中,我可以指定要在哪个表、tr 和 td 中查找内容。如何在代码中提及要查找的表和行?我要报废的网站有多个未命名的表和行。 @Ywapom
  • 我必须看到更多的 html 才能说。继续尝试不同的东西。您可以使用 find_elements(复数)来获取元素列表,然后遍历它们以找到您想要的。如果答案有用,请投票。
  • 链接是a810-bisweb.nyc.gov/bisweb/… 我正在尝试获取表 9 其他注意事项、限制或限制。 @Ywapom
  • 您可以遍历获取表格的模式,然后是其行,然后是其单元格,并查看要匹配的单元格的某些属性。这是一个例子:sqa.stackexchange.com/questions/26278/…
猜你喜欢
  • 2021-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多