十年網站開發(fā)經驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網站問題一站解決
python爬蟲代碼示例的方法:首先獲取瀏覽器信息,并使用urlencode生成post數(shù)據(jù);然后安裝pymysql,并存儲數(shù)據(jù)到MySQL即可。
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供甘州網站建設、甘州做網站、甘州網站設計、甘州網站制作等企業(yè)網站建設、網頁設計與制作、甘州企業(yè)網站模板建站服務,10多年甘州做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
python爬蟲代碼示例的方法:
1、urllib和BeautifuSoup
獲取瀏覽器信息
from urllib import request req = 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"))
相關學習推薦:python視頻教程
使用POST
導入urllib庫下面的parse
from urllib import parse
使用urlencode生成post數(shù)據(jù)
postData = parse.urlencode([ (key1,val1), (key2,val2), (keyn,valn) ])
使用post
request.urlopen(req,data=postData.encode("utf-8")) #使用postData發(fā)送post請求 resp.status #得到請求狀態(tài) resp.reason #得到服務器的類型
完整代碼示例(以爬取維基百科首頁鏈接為例)
#-*- coding:utf-8 -*- from bs4 import BeautifulSoup as bs from urllib.request import urlopen import re import 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只輸出一個內容,若該標簽有子標簽則輸出“none print(url.get_text()+"----->"+url["href"]) # print(url)
2、存儲數(shù)據(jù)到MySQL
安裝pymysql
通過pip安裝:
$ pip install pymysql
或者通過安裝文件:
$ python setup.py install
使用
#引入開發(fā)包 import pymysql.cursors #獲取數(shù)據(jù)庫鏈接 connection = pymysql.connect(host="localhost", user = 'root', password = '123456', db ='wikiurl', charset = 'utf8mb4') try: #獲取會話指針 with connection.cursor() as cursor #創(chuàng)建sql語句 sql = "insert into `tableName`(`urlname`,`urlhref`) values(%s,%s)" #執(zhí)行SQL語句 cursor.execute(sql,(url.get_text(),"https://en.wikipedia.org"+url["href"])) #提交 connection.commit() finally: #關閉 connection.close()
3、爬蟲注意事項
Robots協(xié)議(機器人協(xié)議,也稱爬蟲協(xié)議)全稱是“網絡爬蟲排除協(xié)議”,網站通過Robots協(xié)議告訴搜索引擎哪些頁面可以抓取,哪些頁面不可以抓取。一般在主頁面下,如https://en.wikipedia.org/robots.txt
Disallow:不允許訪問 allow:允許訪問
相關推薦:編程視頻課程