python xpath爬取新闻标题
时间: 2023-09-21 10:06:57 浏览: 410
以下是一个简单的 Python 程序,用于使用 XPath 爬取新闻标题:
```python
import requests
from lxml import etree
url = 'https://news.baidu.com/'
response = requests.get(url)
html = response.text
tree = etree.HTML(html)
# 使用 XPath 获取新闻标题
titles = tree.xpath('//div[@class="hotnews"]/ul/li/a/text()')
# 输出新闻标题
for title in titles:
print(title)
```
该程序使用 requests 库发送 HTTP 请求,并使用 lxml 库解析响应文本。然后,它使用 XPath 表达式来选择新闻标题。在这个例子中,我们使用了一个简单的 XPath 表达式 `//div[@class="hotnews"]/ul/li/a/text()`,它会匹配新闻页面上的热门新闻中的所有标题。
最后,我们使用一个简单的 for 循环,输出新闻标题。
相关问题
Python利用xpath爬取百度新闻
Python通过`lxml`或`BeautifulSoup`等库可以方便地利用XPath语法来爬取网页内容,包括百度新闻。以下是简单的步骤:
1. 安装必要的库:首先确保已安装了`requests`用于发送HTTP请求,以及`lxml`或`beautifulsoup4`其中之一来解析HTML文档。
```bash
pip install requests lxml
# 或者
pip install beautifulsoup4
```
2. 发送请求获取HTML:使用`requests.get()`函数获取包含百度新闻的网页源代码。
```python
import requests
url = 'https://news.baidu.com/' # 百度新闻首页URL
response = requests.get(url)
html_content = response.text
```
3. 使用XPath解析HTML:使用`lxml`的`ElementTree`或`BeautifulSoup`的`.select()`方法,传入XPath表达式来选择需要的数据节点。
```python
from lxml import etree
# 使用lxml
html.etree.fromstring(html_content).xpath('//div[@class="news-item"]')
# 或者使用BeautifulSoup
soup = BeautifulSoup(html_content, 'lxml')
soup.select('.news-item') # 或者 'ul.news-list li'
```
4. 提取数据:对选中的节点进一步提取所需的信息,如标题、链接、发布时间等。
```python
for item in soup.select('.news-item'):
title = item.find('a', class_='title').text
link = item.find('a', class_='title')['href']
pub_date = item.find('span', class_='time').text
print(f"标题: {title}, 链接: {link}, 发布时间: {pub_date}")
```
注意,网站可能会有反爬虫策略,频繁抓取可能违反服务条款,所以在实际操作中应尊重并遵守相关规定。
requests和xpath爬取新闻
使用Python中的requests和xpath库可以方便地爬取新闻网站的内容。具体步骤如下:
1. 使用requests库向新闻网站发送HTTP请求,获取网页内容。
2. 使用xpath库解析网页内容,提取出所需的新闻信息。
代码示例:
```
import requests
from lxml import etree
# 发送HTTP请求,获取网页内容
url = 'https://news.baidu.com/'
response = requests.get(url)
html = response.text
# 使用xpath解析网页内容,提取新闻信息
selector = etree.HTML(html)
news_titles = selector.xpath('//div[@id="pane-news"]/ul/li/a/text()')
# 打印新闻标题
for title in news_titles:
print(title)
```
注意:在使用xpath解析网页内容时,需要根据具体网页的HTML结构进行xpath表达式的编写。
阅读全文