**
**
第一次尝试爬虫,因为需要选择了东方财富股吧,需要的小伙伴可以一起来学习,首先声明一下,本人也是从b站学来了,第一次就是照葫芦画瓢,有样学样获取的。首先附一下视频连接吧,有需要的可以去看详细内容哦~时间也不是很长
https://www.bilibili.com/video/BV1oz4y1Z7pt?from=search&seid=12230486286090734478
需要用到的库有:etree,requests,pandas
requests:获取网页的
etree中的lxml:解析网页文档的
pandas:保存文档
所以呢,需要用到的小伙伴需要先将前两个库下载下来~
代码上该有的注释都有了,这里我就不赘述了,想知道获取的详情可以看视频,他讲得很详细呢~
'''第一步:导入相关库''' from lxml import etree #解析文档 import requests #获取网页 import pandas as pd #保存文件
''' 需要保存的内容: 从股吧网页页面来看,有阅读量、评论量、标题、作者和时间 ''' max_page = int(input("请输入最大获取页面:") #最大爬取页面 all_reards = [] #爬取的阅读量存储在列表中 all_markers = [] #爬取的评论量存储在列表中 all_title = [] #爬取的标题存储在列表中 all_authors = [] #爬取的作者存储在列表中 all_time = [] #爬取的时间存储在列表中
headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64).......me/86.0.4240.198 Safari/537.36' }#构造头文件,这是模拟真人登录,为了防有反爬虫机制的
这里需要说明一下,这个User-Agent需要自己去网页上获取,上面的代码使用不了~~~获取步骤如下:
首先进入股吧网站,获得开发源代码(右键—>审查元素)
就会看到以下界面:
然后点击网络,将网页刷新一下,随便点击一个就行
点完之后,在右边寻找目标:
然后将其全部复制下来就好了~
'''构造循环爬取网页''' for page in range(1,max_page+1): print('craling the page is {}'.format(page)) url = f'http://guba.eastmoney.com/list,zssh000001_{page}.html' response = requests.get(url,headers=headers) #print(response.text) #可以尝试看一下出来的是什么东西哦 #break root = etree.HTML(response.text) #解析文档 ''' 获取文本数据 ''' readers = root.xpath("//div[contains(@class,'articleh normal_post')]//span[@class='l1 a1']//text()") markers = root.xpath("//div[contains(@class,'articleh normal_post')]//span[@class='l2 a2']//text()") title = root.xpath("//div[contains(@class,'articleh normal_post')]//span[@class='l3 a3']//a//text()") author = root.xpath("//div[contains(@class,'articleh normal_post')]//span[@class='l4 a4']//a//text()") puth_time = root.xpath("//div[contains(@class,'articleh normal_post')]//span[@class='l5 a5']//text()") all_reards += readers all_markers += markers all_title += title all_authors += author all_time += puth_time #print(title) #break
''' 将获得的数据保存下来 ''' data_raw = pd.DataFrame() data_raw["read"] = all_reards data_raw["mark"] = all_markers data_raw["title"] = all_title data_raw["author"] = all_authors data_raw["puth_time"] = all_time data_raw.to_excel("D:\\py学习文件\\data1.xls",index=False)
好了,这样就ok了~
这些只是评论标题,而且还有些被省略了,也不是我需要的终极目标数据,那怎样获取点击帖子后的全部文字呢?
学习路漫漫~~~学有所成再回来
(第一次写这种文章,希望有帮助 /xk)