pythonwebscraping:Ahref链接和文章未显示在源代码中

pythonwebscraping:Ahref链接和文章未显示在源代码中,python,web-scraping,Python,Web Scraping,我试图通过url=”“请求查找文章,但当我访问源代码时,新闻稿文章不会显示 我尝试使用Selenium,但即使这样,ahref链接或文章标题也没有显示出来。源代码最终看起来像: 此页面使用JavaScript添加项目,因此您必须使用Selenium 我不知道您在使用Selenium时遇到了什么问题,因为您没有显示代码和任何错误消息(还有两个更重要的元素),但我在获取标题和url方面没有问题 import selenium.webdriver url = 'https://corporate.d

我试图通过url=”“请求查找文章,但当我访问源代码时,新闻稿文章不会显示

我尝试使用Selenium,但即使这样,ahref链接或文章标题也没有显示出来。源代码最终看起来像:

此页面使用JavaScript添加项目,因此您必须使用
Selenium

我不知道您在使用Selenium时遇到了什么问题,因为您没有显示代码和任何错误消息(还有两个更重要的元素),但我在获取标题和url方面没有问题

import selenium.webdriver

url = 'https://corporate.dow.com/en-us/news.html'
driver = selenium.webdriver.Firefox()
driver.get(url)

all_items = driver.find_elements_by_xpath('//ul[@class="results__list"]/li')
for item in all_items:
    print(item.find_element_by_xpath('.//h3').text)
    print(item.find_element_by_xpath('.//a').get_attribute('href'))
    print('---')
部分结果:

Dow hosts tree planting event in Louisiana to officially kick off reforestation commitment with Restore the Earth Foundation
https://corporate.dow.com/en-us/news/press-releases/dow-tree-planting-louisiana-restore-the-earth-foundation.html
---
Dow wins four prestigious 2019 R&D 100 Awards from R&D World Magazine
https://corporate.dow.com/en-us/news/press-releases/dow-wins-four-prestigious-2019-r-d-100-awards-from-r-d-world-mag.html
---
Dow Leaders Achieve Top Honors on OUTstanding’s 2019 Leading LGBT+ Professionals Lists
https://corporate.dow.com/en-us/news/press-releases/dow-leaders-achieve-top-honors-on-outstandings-2019-leading-lgbt.html
---
Dow Reports Third Quarter 2019 Results
https://corporate.dow.com/en-us/news/press-releases/dow-reports-third-quarter-2019-results.html

这就是您如何使用请求获取所有标题及其链接的方法,使用“加载更多”按钮。尝试使用chrome开发工具查找我在以下脚本中使用的url

import requests
from urllib.parse import urljoin

url = 'https://corporate.dow.com/.corporate-search.servlet.json/?x1=ContentType;q1=News;page={};sp_s=StartDate;x20=ContentSubTypeMaster;q20=Olympics%20News%7CInvestor%7CCompany%7CBusiness%7CAll'
base = 'https://corporate.dow.com/'
page = 1

while True:
    res = requests.get(url.format(page))
    if not res.json()['resultsets'][0]['results']:break
    for item in res.json()['resultsets']:
        for elem in item['results']:
            title = elem['ContentTitle']
            link = urljoin(base,elem['RelativeURL'])
            print(f"{'Title: '}{title}\n{'Link: '}{link}\n")
    page+=1
您可能有如下输出:

Title: Dow hosts tree planting event in Louisiana to officially kick off reforestation commitment with Restore the Earth Foundation
Link: https://corporate.dow.com/en-us/news/press-releases/dow-tree-planting-louisiana-restore-the-earth-foundation.html

Title: Dow wins four prestigious 2019 R&D 100 Awards from R&D World Magazine
Link: https://corporate.dow.com/en-us/news/press-releases/dow-wins-four-prestigious-2019-r-d-100-awards-from-r-d-world-mag.html

Title: Dow Leaders Achieve Top Honors on OUTstanding’s 2019 Leading LGBT+ Professionals Lists
Link: https://corporate.dow.com/en-us/news/press-releases/dow-leaders-achieve-top-honors-on-outstandings-2019-leading-lgbt.html

此页面使用JavaScript添加内容<代码>请求和
美化组
无法运行JavaScript。您可能需要能够运行JavaScript的ot控件web浏览器。源代码显示来自服务器的原始代码-在浏览器运行JavaScript之前。您必须在Chrome/Firefox中使用
DevTools
,才能查看有更改的代码。您的代码在哪里?你收到错误信息了吗?始终将完整的错误消息(从单词“Traceback”开始)作为文本(而不是屏幕截图)进行讨论(不是评论)。还有其他有用的信息。太棒了。如何将结果导出到文本文件。。因为我是python的新手。。当导航到代码中的url时,我得到http状态400(错误请求)。你知道吗?你导航到那个url时会得到400个状态,因为那个url中有一个字符串格式。试试看,太好了。但是为什么在测试代码时会完美地显示结果呢。。尽管url无效。我有点困惑,你没有注意到url
page={}
中的这一部分,它是由这个
url.format(page)
处理的。试着弄清楚。查找按钮
Accept
。单击()
它。
驱动程序。按\u id('cookie-continue')查找元素。单击()
Selenium
有一些方法,但我不记得语法,通常我使用
时间。sleep
instead在页面完全加载后可以添加一些元素,Selenium有
wait
方法。浏览器可以看到从服务器发送的HTML已经完全加载,但这并不意味着它已经完全呈现。若JavaScript将所有元素添加到页面中,并没有方法可以回答——它可以使用AJAX延迟添加元素,或者在您滚动页面时添加元素。许多页面对图像使用“延迟加载”——仅在滚动时加载图像。