从网页爬取信息要注意以下几点:
(1)在浏览器中查看网站的源代码
(2)使用Pythonn读文本文件
(3)正则表达式的应用
(4)先抓大再抓小
(5)使用Python写csv文件
简单例子:爬取百度贴吧一个热门贴子
#简单网页爬虫
import re
import csv
#打开存储网页源文件的文件
with open('E:/python/source.txt','r') as f:
fr=f.read()
#获取只想要的信息
result_list=[]
source_list=re.findall('"l_post l_post_bright j_l_post clearfix " (.*?)p_props_tail props_appraise_wrap',fr,re.S)
#从大的信息里获取发帖人,发帖内容,发帖时间
for each in source_list:
result={}
#获取发帖人的昵称获取,因为看它的界面代码target="_blank">这个出现的频率很高,所以p_author_name j_user_card(.*?)target="_blank">(.*?)<
#这样才获取得准确。
a_list={}
a_list=re.findall('p_author_name j_user_card(.*?)target="_blank">(.*?)<',each,re.S)
result['username']=a_list[0][1]
#获取发帖内容 ,因为发帖内容可能是图片,因为获取的内容是中文,所以图片是为空的所以要replace
result['content']=re.findall('class="d_post_content j_d_post_content " style="display:;">(.*?)<',each,re.S)[0].replace(' ','')
#获取发帖时间,因为span class="tail-info">后面内容也有38楼什么的,所以这里这样获取,话题是今年国庆所以时间都是2019年
result['reply_time']=re.findall('span class="tail-info">(2019.*?)<',each,re.S)[0]
result_list.append(result)
#写入csv文件
with open('E:/python/tieba.csv','w') as f:
writer=csv.DictWriter(f,fieldnames=['username','content','reply_time'])
writer.writeheader()
writer.writerows(result_list)
第一次完成爬取网页信息,涉及到的知识点有正则表达式,文件的读写,如有错漏,请各位大神指正,谢谢!