网页抓取qq(【新三板】一下+beautifulsoup实现抓取中财网数据引擎的公司档案)

优采云 发布时间: 2021-12-07 14:17

  网页抓取qq(【新三板】一下+beautifulsoup实现抓取中财网数据引擎的公司档案)

  记录一个python爬虫的快速实现,想抓取中国财经网数据引擎新三板板块下所有股票的公司文件。网站在这里。html

  更简单的网站不同的页码有不同的联系。可以通过观察连接的变化找出规律,然后生成所有与页码对应的连接然后分别抓取,但是这个网站改变页面的时候连接没有变化,所以我计划在第二页被点击时观察请求python

  

  

  发现使用了get的请求方法,并且请求中有一个curpage参数,好像控制不同的页数,所以在请求连接中改变了这个参数的值,其他的值发现没有变化,所以我决定改变它。就是利用我们标题中提到的selenium+beautifulsoup来模拟点击网页中的下一页按钮进行翻页,分别抓取网页的内容。混帐

  首先我们做一些准备工作,安装必要的包,打开命令行,直接pip install selenium和pip installbeautifulsoup4github

  然后就是下载安装chromedriver驱动了,网址下面,记得配置环境变量或者直接安装在工作目录下。(也可以使用IE、phantomJS等) web

  这里我们先抓取每只股票对应的首页链接,代码如下(使用python2):chrome

   1 # -*- coding: utf-8 -*-

2 from selenium import webdriver

3 from bs4 import BeautifulSoup

4 import sys

5 reload(sys)

6 sys.setdefaultencoding('utf-8')

7

8 def crawl(url):

9 driver = webdriver.Chrome()

10 driver.get(url)

11 page = 0

12 lst=[]

13 with open('./url.txt','a') as f:

14 while page < 234:

15 soup = BeautifulSoup(driver.page_source, "html.parser")

16 print(soup)

17 urls_tag = soup.find_all('a',target='_blank')

18 print(urls_tag)

19 for i in urls_tag:

20 if i['href'] not in lst:

21 f.write(i['href']+'\n')

22 lst.append(i['href'])

23 driver.find_element_by_xpath("//a[contains(text(),'下一页')]").click()

24 time.sleep(2)

25 return 'Finished'

26 def main():

27 url = 'http://data.cfi.cn/cfidata.aspx?sortfd=&sortway=&curpage=2&fr=content&ndk=A0A1934A1935A1986A1995&xztj=&mystock='

28 crawl(url)

29 if __name__ == '__main__':

30 main()

  运行代码,发现老是报错:app

  

  这里的错误意味着找不到您要查找的按钮。蟒蛇爬虫

  那么我们查看一下网页的源码:网站

  

  发现网页被分成了不同的frame,所以我们猜测需要跳转到frame。我们需要抓取的连接所在的frame名称是“content”,所以我们添加一行代码:driver.switch_to.frame('content') google

  def crawl(url):

driver = webdriver.Chrome()

driver.get(url)

driver.switch_to.frame('content')

page = 0

lst=[]

with open('./url.txt','a') as f:

while page < 234:

soup = BeautifulSoup(driver.page_source, "html.parser")

print(soup)

urls_tag = soup.find_all('a',target='_blank')

print(urls_tag)

for i in urls_tag:

if i['href'] not in lst:

f.write(i['href']+'\n')

lst.append(i['href'])

driver.find_element_by_xpath("//a[contains(text(),'下一页')]").click()

time.sleep(2)

return 'Finished'

  到目前为止,它运行到:

  参考博文链接:%E5%88%A9%E7%94%A8beautifulsoup+selenium%E8%87%AA%E5%8A%A8%E7%BF%BB%E9%A1%B5%E6%8A%93% E5 %8F%96%E7%BD%91%E9%A1%B5%E5%86%85%E5%AE%B9/

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线