python爬蟲代碼示例的方法:首先獲取瀏覽器信息,并使用urlencode生成post數據;然后安裝pyMySQL,并存儲數據到MySQL即可。
python爬蟲代碼示例的方法:
1、urllib和BeautifuSoup
獲取瀏覽器信息
from urllib import requestreq = request.urlopen("http://www.baidu.com")print(req.read().decode("utf-8"))
模擬真實瀏覽器:攜帶user-Agent頭
(目的是不讓服務器認為是爬蟲,若不帶此瀏覽器信息,則可能會報錯)
req = request.Request(url) #此處url為某個網址req.add_header(key,value) #key即user-Agent,value即瀏覽器的版本信息resp = request.urlopen(req)print(resp.read().decode("utf-8"))
使用POST
導入urllib庫下面的parse
from urllib import parse
使用urlencode生成post數據
postData = parse.urlencode([ (key1,val1), (key2,val2), (keyn,valn)])
使用post
request.urlopen(req,data=postData.encode("utf-8")) #使用postData發送post請求resp.status #得到請求狀態resp.reason #得到服務器的類型
完整代碼示例(以爬取維基百科首頁鏈接為例)
#-*- coding:utf-8 -*-from bs4 import BeautifulSoup as bsfrom urllib.request import urlopen import reimport ssl#獲取維基百科詞條信息ssl._create_default_https_context = ssl._create_unverified_context #全局取消證書驗證#請求URL,并把結果用utf-8編碼req = urlopen("https://en.wikipedia.org/wiki/Main page").read().decode("utf-8")#使用beautifulsoup去解析soup = bs(req,"html.parser")# print(soup)#獲取所有href屬性以“/wiki/Special”開頭的a標簽urllist = soup.findAll("a",href=re.compile("^/wiki/Special"))for url in urllist:#去除以.jpg或.JPG結尾的鏈接if not re.search("\.(jpg|JPG)$",url["href"]):#get_test()輸出標簽下的所有內容,包括子標簽的內容;#string只輸出一個內容,若該標簽有子標簽則輸出“noneprint(url.get_text()+"----->"+url["href"])# print(url)
2、存儲數據到MySQL
安裝pymysql
通過pip安裝:
$ pip install pymysql
或者通過安裝文件:
$ python setup.py install
使用
#引入開發包import pymysql.cursors#獲取數據庫鏈接connection = pymysql.connect(host="localhost",user = 'root',password = '123456',db ='wikiurl',charset = 'utf8mb4')try:#獲取會話指針with connection.cursor() as cursor#創建sql語句sql = "insert into `tableName`(`urlname`,`urlhref`) values(%s,%s)"#執行SQL語句cursor.execute(sql,(url.get_text(),"https://en.wikipedia.org"+url["href"]))#提交connection.commit()finally:#關閉connection.close()
3、爬蟲注意事項
Robots協議(機器人協議,也稱爬蟲協議)全稱是“網絡爬蟲排除協議”,網站通過Robots協議告訴搜索引擎哪些頁面可以抓取,哪些頁面不可以抓取。一般在主頁面下,如https://en.wikipedia.org/robots.txt
Disallow:不允許訪問allow:允許訪問
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
什么是二八理論?“二八定律”又名80/20定律、帕累托法則(定律)也叫巴萊特定律、最省力的法則、不平衡原則等,被廣泛應用于社會學及企業管理學等。是19世紀末20世紀初意大利經濟學家巴萊多發現的,80/20分析法檢驗兩組類似數據之間的關系,并用來改變它們所描述的關系。第一個主要用途是去發現該關系的關鍵起因—20%的投入就有80%的產出,并在取得最佳業績的同時減少資...
網友:一是因為飛機沒有為乘客配備降落傘。其次,如果每個人都配備了降落傘,降落傘占用空間太大空。第三,沒有降落傘,飛行員必須高度重視飛行安全。第四,即使有降落傘,打開艙門,人會在海拔空瞬間被吸出機艙。第五,大多數人沒有經過跳傘訓練。即使在一萬多米的高空跳出機艙,面對缺氧和寒冷,他們也會死去。第六,如果在飛機上等,可能會有轉機,比如臨時降落。生存還是有希望的。所以,讓乘客死在飛機里不是每個人或者航空公...
近日,央行、銀保監會、外匯局等三部門分別開會,釋放股債匯房重磅信息。其中,央行、外匯局在會上提出,加強部門協作,維護股市、債市、樓市健康發展。下面,我們一起來具體了解一下吧。在促進經濟高質量發展方面,央行、外匯局會上要求,加強部門協作,維護股市、債市、樓市健康發展。在堅持全心全意為人民服務方面,央行、外匯局表示,強化對重點領域、薄弱環節和受疫情影響行業、群體的支持,抓好已出臺政策落地見效,研究出臺...