python爬虫零基础

请问为什么同样的代码输出来的确实只有一个网址和标题?谢谢!


import requests
import re
headers ={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.67'}
ur1 = 'http://search.zqrb.cn/search.php?src=all&q=%E8%B4%B5%E5%B7%9E%E8%8C%85%E5%8F%B0&f=_all&s=newsdate_DESC'
res = requests.get(ur1, headers=headers).text
p_title = '<a href=".*?" target="_blank"><h4>1 <em></em><em></em><em></em><em></em>(.*?)</h4></a>'
p_href = '<a href="(.*?)" target="_blank"><h4>1 <em></em><em></em><em></em><em></em>.*?</h4></a>'
p_date = '<span><strong>时间:</strong>(.*?)</span>'
title = re.findall(p_title, res)
href = re.findall(p_href, res)
date = re.findall(p_date, res)
source = []
#for i in range(len(title)):
#    source.append('证券日报')
#    title[i] = re.sub
print(title)
print(href)
print(date)

http://search.zqrb.cn/search.php?src=all&q=%E8%B4%B5%E5%B7%9E%E8%8C%85%E5%8F%B0&f=_all&s=newsdate_DESC

img

img

同样的代码吗?

p_title = '<a href=".*?" target="_blank"><h4>1 <em></em><em></em><em></em><em></em>(.*?)</h4></a>'
p_href = '<a href="(.*?)" target="_blank"><h4>1 <em></em><em></em><em></em><em></em>.*?</h4></a>'
p_date = '<span><strong>时间:</strong>(.*?)</span>'

这几行代码你确定跟书上的一样吗?里面为什么会出现贵州茅台四个字?

h4 的部分和书上的不一样啊,书上用的是通配符 .*?

【以下回答由 GPT 生成】

问题描述:在给定的代码中,使用Python爬虫爬取了一个网页的内容,然后使用正则表达式提取了网页中的标题、链接和日期信息。但是输出结果只有一个网址和标题,没有日期信息。

解决方案: 问题出在正则表达式的写法上,导致日期信息没有正确提取出来。以下是修正后的代码。

import requests
import re

# 添加代码提示
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.67'}
url = 'http://search.zqrb.cn/search.php?src=all&q=%E8%B4%B5%E5%B7%9E%E8%8C%85%E5%8F%B0&f=_all&s=newsdate_DESC'
response = requests.get(url, headers=headers).text

pattern_title = r'<a href=".*?" target="_blank"><h4>1 <em>贵<\/em><em>州<\/em><em>茅<\/em><em>台<\/em>(.*?)<\/h4><\/a>'
pattern_href = r'<a href="(.*?)" target="_blank"><h4>1 <em>贵<\/em><em>州<\/em><em>茅<\/em><em>台<\/em>.*?<\/h4><\/a>'
pattern_date = r'<span><strong>时间:<\/strong>(.*?)<\/span>'

titles = re.findall(pattern_title, response)
hrefs = re.findall(pattern_href, response)
dates = re.findall(pattern_date, response)

source = ['证券日报'] * len(titles)
for i in range(len(titles)):
    titles[i] = re.sub('<.*?>', '', titles[i])

print(titles)
print(hrefs)
print(dates)

修改了变量名,将title改为titles,将href改为hrefs,将date改为dates

同时,还添加了一个循环来对标题进行处理,去掉了标题中的HTML标签。

最后,将修改后的结果输出。

请注意,代码的完整性和正确性可能还需要根据实际情况作一些调整。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^