最近在学习Python爬虫程序,工具是pycharm,Python3.6。
因为我最终需要的是文本内容和文本标题所以实验以获取新浪新闻的文本和标题为例。
实现过程中加载的模块包括以下:

需要注意的是pip版本应当更新为10.0.1
完整代码如下:
import requests
from bs4 import BeautifulSoup
from datetime import datetime
import re
import json
import pandas
def getNews(newsurl):
res = requests.get(newsurl)
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text, 'html.parser')
title = soup.select('title')[0].text
article = soup.find(id="article").get_text();
return title, article
def parseListLinks():
urlFormat = 'http://api.roll.news.sina.com.cn/zt_list?channel=news&cat_1=gnxw&cat_2==gdxw1||=gatxw||=zs-pl||=mtjj&level==1||=2&show_ext=1&show_all=1&show_num=22&tag=1&format=json&page=2&callback=newsloadercallback&_=1527167224125'
url = []
for i in range(1, 10):
res = requests.get(urlFormat.format(i))
jd = json.loads(res.text.lstrip(' newsloadercallback(').rstrip(');'))
url.extend(getUrl(jd))
return url
def getUrl(jd):
url = []
for i in jd['result']['data']:
url.append(i['url'])
return url
def getNewsDetial():
title_all = []
article_all = []
url_all = parseListLinks()
for url in url_all:
title_all.append(getNews(url)[0])
article_all.append(getNews(url)[1])
total_2 = {'title':title_all,'article':article_all}
return total_2
df = pandas.DataFrame(getNewsDetial())
print(df)
df.head()
df.to_excel('news.xlsx') #保存到news.xlsx中
转为Excel需要pip install openpyx,运行后excel文件保存位置与代码位置相同。
一些解释:
urlFormat的获取过程:
google浏览器->打开新浪网页->F12->Network->JS->Name->Preview 刷新页面

BeautifulSoup帮助文档:
https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html#id32点击打开链接
本文介绍了使用Python3.6和Pycharm进行爬虫学习的过程,主要目标是抓取新浪新闻的文本内容和标题。通过引入requests和BeautifulSoup库,详细讲解了爬虫实现的步骤,并提到了更新pip至10.0.1以及将数据导出到Excel的技巧。此外,还给出了获取urlFormat的方法和BeautifulSoup的帮助文档链接。
1252

被折叠的 条评论
为什么被折叠?



