【附上解釋】爬取A股所有上市公司的資訊並存儲到資料庫或者是csv檔案中
輸入到mysql版
輸出會有警告,但是不影響。
附上了詳細的解釋~
import pandas as pd
import requests
import random
from bs4 import BeautifulSoup
import pymysql
from sqlalchemy import create_engine
def get_one_page(i):
# 使用ip代理,隨機代理ip
# 設定headers 這些都是為了避免訪問過於頻繁被禁止
try:
IPs = [{'HTTP': 'HTTP://118.190.95.35:9001'} ,
{'HTTP': 'HTTP://61.135.217.7:80'},
{'HTTP': 'HTTP://116.1.11.19:80'}]
reportTime = '2017-12-31'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
'Referer' : 'http://s.askci.com/stock/a/?reportTime=%s' % reportTime + '&pageNum=178'
}
url = 'http://s.askci.com/stock/a/?reportTime=%s' % reportTime + '&pageNum=%d' % i
response = requests.get(url, headers=headers, proxies=random.choice(IPs))
if response.status_code == 200:
return response.text
return None
except requests.RequestException:
print("爬取出錯")
def parse_one_page(html):
soup = BeautifulSoup(html, 'lxml')
# 選擇id為myTable04的控制元件,程式碼中有解釋
content = soup.select("#myTable04")[0]
# 第一行設定為column,並且選第一個(因為是一個list), 其實也只有一個
tbl = pd.read_html(content.prettify(), header=0)[0]
# 強制修改列名,中文列名不好寫入資料庫
tbl.columns = ['serial_number', 'stock_code', 'stock_abbre', 'company_name', 'province', 'city',
'main_business_income',
'net_profit', 'employee', 'listing_date', 'zhaogushu', 'financial_report',
'industry_classification', 'industry_type', 'main_business']
return tbl
def generate_mysql(db, user, password, port):
# 創立連線
# db就是需要資料庫中的schema 選一個schema就好了
conn = pymysql.connect(
host='localhost',
user=user,
password=password,
port=port,
charset='utf8',
db=db
)
cursor = conn.cursor()
# 建立資料庫
sql = 'CREATE DATABASE if not exists %s' % db
# 執行命令
cursor.execute(sql)
# 建立表
sql = 'CREATE TABLE if not exists listed_company (serial_number INT(20) NOT NULL, stock_code VARCHAR(20), stock_abbre VARCHAR(20), company_name VARCHAR (20),province VARCHAR (20), city VARCHAR (20), main_business_income VARCHAR(20), net_profit VARCHAR (20), employee INT (20), listing_date DATE, zhaogushu VARCHAR(20), financial_report VARCHAR (20), industry_classification VARCHAR(20), industry_type VARCHAR(100), main_business VARCHAR(200), PRIMARY KEY (serial_number))'
# 執行命令
cursor.execute(sql)
# 斷開連結
conn.close()
def write_to_sql(tbl, db, user, password, port):
engine = create_engine('mysql+pymysql://%s:%[email protected]:%d/%s?charset=utf8' % (user, password, port, db))
tbl.to_sql('listed_company', con=engine, if_exists='append', index=False)
def main(page):
# 設定預想database
db = 'test'
user = 'root'
password = '1234'
port = 3306
# 生成資料庫
generate_mysql(db, user, password, port)
# 選page這麼多頁
for i in range(1, page + 1):
# 讀取網頁html
html = get_one_page(i)
# 分析得到dataframe
tbl = parse_one_page(html)
# 將dataframe寫到sql中
write_to_sql(tbl, db, user, password, port)
if __name__ == '__main__':
reportTime = '2017-12-31'
url = 'http://s.askci.com/stock/a/?reportTime=%s' % reportTime + '&pageNum=%d'
# 最大設定為178,輸入頁數就好了
main(2)
輸出到csv檔案版本
相關推薦
【附上解釋】爬取A股所有上市公司的資訊並存儲到資料庫或者是csv檔案中
輸入到mysql版 輸出會有警告,但是不影響。 附上了詳細的解釋~ import pandas as pd import requests import random from bs4 import BeautifulSoup import pymysql f
【Python爬蟲】爬取微信公眾號文章資訊準備工作
有一天發現我關注了好多微信公眾號,那時就想有沒有什麼辦法能夠將微信公眾號的文章弄下來,而且還想將一些文章的精彩評論一起搞下來。參考了一些文章,通過幾天的研究基本上實現了自己的要求,現在記錄一下自己的一些心得。 整個研究過程如下: 1.瞭解微信公眾號文章連結的組成,歷史文章API組成,單個文章
爬取貓眼top100電影並存儲在本地csv檔案中
import requests from bs4 import BeautifulSoup import time import csv def getcontent(url): #網頁請求頭
【Python3 爬蟲】爬取博客園首頁所有文章
表達式 技術 標記 itl 1.0 headers wow64 ignore windows 首先,我們確定博客園首頁地址為:https://www.cnblogs.com/ 我們打開可以看到有各種各樣的文章在首頁,如下圖: 我們以上圖標記的文章為例子吧!打開網頁源碼,搜
【Python3爬蟲】爬取中國國家地理的62個《古鎮》和363張攝影照片
宣告:爬蟲為學習使用,請各位同學務必不要對當放網站或i伺服器造成傷害。務必不要寫死迴圈。 - 思路:古鎮——古鎮列表(迴圈獲取古鎮詳情href)——xx古鎮詳情(獲取所有img的src) - from bs4 import BeautifulSoup import u
使用requests配合【lxml+xpath】爬取B2B網站
@匯入類庫 import requests from lxml import etree import time @準備請求頭,以偽裝客戶端瀏覽器 # 請求頭,可以由F12頁面控制檯或fi
【網路爬蟲】爬取豆瓣電影Top250評論
前言 本爬蟲大致流程為: (1)分析網頁——分析網站結構 (2)傳送請求——通過requests傳送請求 (3)響應請求——得到請求響應的頁面 (4)解析響應——分析頁面,得到想要的資料 (5)儲存文字——以txt格式儲存 使用環境 anaconda3 pyt
【大數據】爬取全部的校園新聞
series scl nco rip read 數據處理 info imp taf 1.從新聞url獲取新聞詳情: 字典,anews def anews(url): newsDetail={} res=requests.get(url)
【Python3爬蟲】爬取美女圖新姿勢--Redis分散式爬蟲初體驗
一、寫在前面 之前寫的爬蟲都是單機爬蟲,還沒有嘗試過分散式爬蟲,這次就是一個分散式爬蟲的初體驗。所謂分散式爬蟲,就是要用多臺電腦同時爬取資料,相比於單機爬蟲,分散式爬蟲的爬取速度更快,也能更好地應對IP的檢測。本文介紹的是利用Redis資料庫實現的分散式爬蟲,Redis是一種常用的菲關係型資料庫,常用資料
webmagic爬取百度知道的問答對並存到資料庫
(1)定義資料庫爬取的title: package shuju; public class baidu { private String author;// 編號 public String getAuthor() {
Django實戰: Python爬蟲爬取鏈家上海二手房資訊,存入資料庫並在前端顯示
好久沒寫Django實戰教程了,小編我今天就帶你把它與Python爬蟲結合做出個有趣的東西吧。我們將開發這樣一個應用,前端使用者可以根據行政區劃,房廳數和價格區間選擇需要爬取的二手房房源資訊,後臺Python開始爬取資料。爬取資料完成後,通過Django將爬來的資料存入資料庫
【Python爬蟲實戰專案一】爬取大眾點評團購詳情及團購評論
1 專案簡介 從大眾點評網收集北京市所有美髮、健身類目的團購詳情以及團購評論,儲存為本地txt檔案。 技術:Requests+BeautifulSoup 以美髮為例:http://t.dianping.com/list/beijing?q=美髮 爬取內容包括: 【團購詳情】團購名稱、原
【每週一爬】爬取盜版小說網的小說
【本帖持續更新,直到能將一本書全部爬到一個.txt檔案中】 一:準備工作 爬取的網站地址:http://b.faloo.com/tag/6293.html &
【Python3爬蟲-爬小說】爬取某小說網小說2/2--利用下一頁抓
宣告:爬蟲為學習使用,請各位同學務必不要對當放網站或i伺服器造成傷害。務必不要寫死迴圈。 - 詳細思路參照程式碼註釋: 如下:網址無任何規律,但是頁面有一個下一頁。那是要抓到下一頁的地址就能把小說全部抓取。 - from bs4 import BeautifulSoup
【Python3爬蟲-爬小說】爬取某小說網小說1/2--利用網址順序抓
宣告:爬蟲為學習使用,請各位同學務必不要對當放網站或i伺服器造成傷害。務必不要寫死迴圈。 - 練習目標:爬取https://b.faloo.com/BuyBook.aspx?id=526024 《我的高中女友門》 - 解釋請看程式碼註釋: 主要是網頁是xxx/1.h
【python爬蟲-爬微博】爬取王思聰所有微博資料
1. 準備: 代理IP 。網上有很多免費代理ip,如西刺免費代理IP http://www.xicidaili.com/,自己可找一個可以使用的進行測試; 抓包分析 。通過抓包獲取微博內容地址。當然web下的api地址可以通過瀏覽器獲得。 以下是通過瀏覽器除錯獲得
【爬蟲小程式:爬取鬥魚所有房間資訊】Xpath(執行緒池版)
# 本程式親測有效,用於理解爬蟲相關的基礎知識,不足之處希望大家批評指正 from queue import Queue import requests from lxml import etree from multiprocessing.dummy import Pool import t
【爬蟲小程式:爬取鬥魚所有房間資訊】Xpath(多執行緒版)
# 本程式親測有效,用於理解爬蟲相關的基礎知識,不足之處希望大家批評指正 from queue import Queue import requests from lxml import etree from threading import Thread "
【爬蟲小程式:爬取鬥魚所有房間資訊】Xpath(多程序版)
# 本程式親測有效,用於理解爬蟲相關的基礎知識,不足之處希望大家批評指正 1 import requests 2 from lxml import etree 3 from multiprocessing import JoinableQueue as Queue 4 from
【Python】【爬蟲】爬取網易、騰訊、新浪、搜狐新聞到本地
這個實驗主要爬取新聞網站首頁的新聞內容儲存到本地,爬取內容有標題、時間、來源、評論數和正文。 工具:python 3.6 谷歌瀏覽器 爬取過程: 一、安裝庫:urllib、requests、BeautifulSoup 1、urllib庫:Urlli