请问为什么同样的代码输出来的确实只有一个网址和标题?谢谢!
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)
同样的代码吗?
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标签。
最后,将修改后的结果输出。
请注意,代码的完整性和正确性可能还需要根据实际情况作一些调整。
【相关推荐】