新浪页面分析: 新浪的主页大部分新闻内容都是通过li标签列出来,然后再在li标签里面加个a标签,用来存超链接和内容
通过上面的分析,可以通过正则找到所有<li>><a></a></li>
格式的标签,代码如下:
import re
import requests
def getHTMLText(url): #得到HTML的网页
try:
kv = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"}
r=requests.get(url,headers=kv,timeout=30)
r.raise_for_status()
r.encoding=r.apparent_encoding
return r.text
except:
return ""
def fillunivList(ulist,html): #把每个标签的标签链接和标签名称存入ulist列表中,这里是二维列表
try:
for plt in re.finditer(r'<li><a href="http.*">.*</a></li>',html): #用正则筛选<li>><a></a></li>格式的内容,然后用finditer方法遍历
a=re.sub(r'<li><a href="|target=".*"|"|>|<b>|</b>|</a></li>',"",plt.group(0)) #删除不用的内容,只留下超链接和标签内容
ulist.append(a.split(" ")) #把每次得到的超链接和内容存入ulist列表中
except:
return ""
def main(): #创建一个主函数
ulist=[] #创建一个列表,用来存放标签链接和标签名称
url="https://www.sina.com.cn/"
html=getHTMLText(url)
fillunivList(ulist,html)
op= open(r'C:\Users\Mr.Wang\Desktop\新浪标签获取文件.txt', 'x') #在桌面创建一个txt文件夹,用来存放得到的信息
op.write("标签链接 标签名称") #给个提示,左边是放链接,右边是放名称
op.write('\r\n') #换行
for ls in ulist: #遍历从fillunivList函数得到的ulist,遍历这个列表
op.writelines(ls) #用writeLines把ulist每个列表写个txt文件中
op.write('\r\n') #换行
main()
运行如下: