第一次写一个算是比较完整的爬虫,自我感觉极差啊,代码low,效率差,也没有保存到本地文件或者数据库,强行使用了一波多线程导致数据顺序发生了变化。。。

贴在这里,引以为戒吧。

# -*- coding: utf-8 -*-
"""
Created on Wed Jul 18 21:41:34 2018
@author: brave-man
blog: http://www.cnblogs.com/zrmw/
""" import requests
from bs4 import BeautifulSoup
import json
from threading import Thread

# 获取上市公司的全称,英文名称,地址,法定代表人(也可以获取任何想要获取的公司信息)
def getDetails(url):
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0"}
res = requests.get("{}".format(url), headers = headers)
res.encoding = "GBK"
soup = BeautifulSoup(res.text, "html.parser") details = {"code": soup.select(".table")[0].td.text.lstrip("股票代码:")[:6],
"Entire_Name": soup.select(".zx_data2")[0].text.strip("\r\n "),
"English_Name": soup.select(".zx_data2")[1].text.strip("\r\n "),
"Address": soup.select(".zx_data2")[2].text.strip("\r\n "),
"Legal_Representative": soup.select(".zx_data2")[4].text.strip("\r\n ")}
# 这里将details转换成json字符串格式用作后期存储处理
jd = json.dumps(details)
jd1 = json.loads(jd)
print(jd1)

# 此函数用来获取上市公司的股票代码
def getCode():
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0"}
res = requests.get("http://www.cninfo.com.cn/cninfo-new/information/companylist", headers = headers)
res.encoding = "gb1232"
soup = BeautifulSoup(res.text, "html.parser")
# print(soup.select(".company-list"))
L = []
l1 = []
l2 = []
l3 = []
l4 = []
for i in soup.select(".company-list")[0].find_all("a"):
code = i.text[:6]
l1.append(code)
for i in soup.select(".company-list")[1].find_all("a"):
code = i.text[:6]
l2.append(code)
for i in soup.select(".company-list")[2].find_all("a"):
code = i.text[:6]
l3.append(code)
for i in soup.select(".company-list")[3].find_all("a"):
code = i.text[:6]
l4.append(code)
L = [l1, l2, l3, l4]
print(L[0])
return getAll(L) def getAll(L):
def t1(L):
for i in L[0]:
url_sszb = "http://www.cninfo.com.cn/information/brief/szmb{}.html".format(i)
getDetails(url_sszb)
def t2(L):
for i in L[1]:
url_zxqyb = "http://www.cninfo.com.cn/information/brief/szsme{}.html".format(i)
getDetails(url_zxqyb)
def t3(L):
for i in L[2]:
url_cyb = "http://www.cninfo.com.cn/information/brief/szcn{}.html".format(i)
getDetails(url_cyb)
def t4(L):
for i in L[3]:
url_hszb = "http://www.cninfo.com.cn/information/brief/shmb{}.html".format(i)
getDetails(url_hszb)
# tt1 = Thread(target = t1, args = (L, ))
# tt2 = Thread(target = t2, args = (L, ))
# tt3 = Thread(target = t3, args = (L, ))
# tt4 = Thread(target = t4, args = (L, ))
#
# tt1.start()
# tt2.start()
# tt3.start()
# tt4.start()
#
# tt1.join()
# tt2.join()
# tt3.join()
# tt4.join()
t1(L)
t2(L)
t3(L)
t4(L) if __name__ == "__main__":
getCode()

没有考虑实际生产中突发的状况,比如网速延迟卡顿等问题。

速度是真慢,有时间会分享给大家 selenium + 浏览器 的爬取巨潮资讯的方法代码。晚安~

python 爬虫 requests+BeautifulSoup 爬取巨潮资讯公司概况代码实例的更多相关文章

  1. 【Python成长之路】Python爬虫 --requests库爬取网站乱码(\xe4\xb8\xb0\xe5\xa)的解决方法【华为云分享】

    [写在前面] 在用requests库对自己的CSDN个人博客(https://blog.csdn.net/yuzipeng)进行爬取时,发现乱码报错(\xe4\xb8\xb0\xe5\xaf\x8c\ ...

  2. [原创]python爬虫之BeautifulSoup,爬取网页上所有图片标题并存储到本地文件

    from bs4 import BeautifulSoup import requests import re import os r = requests.get("https://re. ...

  3. Python 爬虫入门之爬取妹子图

    Python 爬虫入门之爬取妹子图 来源:李英杰  链接: https://segmentfault.com/a/1190000015798452 听说你写代码没动力?本文就给你动力,爬取妹子图.如果 ...

  4. 【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

    原文:教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http:/ ...

  5. python爬虫-基础入门-爬取整个网站《3》

    python爬虫-基础入门-爬取整个网站<3> 描述: 前两章粗略的讲述了python2.python3爬取整个网站,这章节简单的记录一下python2.python3的区别 python ...

  6. python爬虫-基础入门-爬取整个网站《2》

    python爬虫-基础入门-爬取整个网站<2> 描述: 开场白已在<python爬虫-基础入门-爬取整个网站<1>>中描述过了,这里不在描述,只附上 python3 ...

  7. python爬虫-基础入门-爬取整个网站《1》

    python爬虫-基础入门-爬取整个网站<1> 描述: 使用环境:python2.7.15 ,开发工具:pycharm,现爬取一个网站页面(http://www.baidu.com)所有数 ...

  8. Python爬虫教程-17-ajax爬取实例(豆瓣电影)

    Python爬虫教程-17-ajax爬取实例(豆瓣电影) ajax: 简单的说,就是一段js代码,通过这段代码,可以让页面发送异步的请求,或者向服务器发送一个东西,即和服务器进行交互 对于ajax: ...

  9. Python爬虫实战之爬取百度贴吧帖子

    大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 对百度贴吧的任意帖子进行抓取 指定是否只抓取楼主发帖 ...

随机推荐

  1. spring-session用mysql实现session共享实践

    前段时间,写了篇<spring-session-data-redis解决session共享的问题>文章,介绍了spring-session使用redis存储实现session共享的内部机制 ...

  2. hadoop集群无法找到datanode节点问题解决

    问题:在配置hadoop集群时,master的50070后台中找不到slave的datanode节点怎么办? 解决: 方法一:首先确认下master和slave的hdfs-site.xml配置中的df ...

  3. Redis学习笔记(3)-XShell连接CentOSMini,并安装Redis

    使用XShell远程连接CentOSMini 点击download下载XShell5.0. 下载之后安装.配置XShell. 配置XShell前的准备 打开VM,启动CentOSMini.CentOS ...

  4. 【转载】ASP.NET生成图片的缩略图

    图片处理是C#程序开发中时常会涉及到的一个业务,除了图像的上传.保存以及下载等功能外,根据上传的图片生成一个缩略图也是常见业务,在C#语言中,可以通过Image类提供的相关方法对图片进行操作,如指定宽 ...

  5. [Linux] nginx管理员指南基本功能

    1.运行时控制Nginx进程 NGINX有一个主进程和一个或多个工作进程. 如果启用了缓存,则缓存加载器和缓存管理器进程也会在启动时运行. 主进程的主要目的是读取和评估配置文件,以及维护工作进程. 工 ...

  6. PHP生成器细说

    之前写过关于生成器的文章,可能还不够详细,正好群里有朋友在讨论.觉得还是有必要再细说下,如果大家做过Python或者其他语言的,对于生成器应该不陌生.生成器是PHP 5.5.才引入的功能,也许大家觉得 ...

  7. (8)Microsoft office Word 2013版本操作入门_制作传单海报

    1.纸张大小,方向设定. 1.1纸张大小: [页面布局]----[纸张大小] 可以选择已有的尺寸,也可以选择其他自定义的大小. 1.2 方向设定: [页面布局]--[纸张方向]选择 横向或者纵向 2. ...

  8. JSJ——主数据类型和引用

    变量有两种:primitive主数据类型和引用. Java注重类型.它不会让你做出把长颈鹿类型变量装进兔子类型变量中这种诡异又危险的举动——如果有人对长颈鹿调用“跳跃”这个方法会发生什么悲剧?并且它也 ...

  9. 浅谈spring中AOP以及spring中AOP的注解方式

    AOP(Aspect Oriented Programming):AOP的专业术语是"面向切面编程" 什么是面向切面编程,我的理解就是:在不修改源代码的情况下增强功能.好了,下面在 ...

  10. linux的 .bashrc文件是干什么的?

    使用man bash命令查看到的联机帮助文件中的相关解释如下: .bashrc - The individual per-interactive-shell startup file. 这个文件主要保 ...