摘要:本文代碼地址爬取豆瓣電影爬取拉勾網職位信息模擬登陸知乎為什么沒人給我點贊。職位名職位信息運行結果模擬登錄知乎通過開發者工具,獲取的數據。
我開通了公眾號【智能制造專欄】,以后技術類文章會發在專欄。
用Python寫爬蟲是很方便的,最近看了xlzd.me的文章,他的文章寫的很到位,提供了很好的思路。因為他的文章部分代碼省略了。下面是基于他的文章的三個代碼片段:
基于Python3,Python2的話需要修改下input輸入函數和print的用法。本文github代碼地址
爬取豆瓣電影top250
爬取拉勾網職位信息
模擬登陸知乎
為什么沒人給我點贊。?!
有些代碼做了更改。其中把獲取的數據存儲到excel中。關于存取數據到excel可以看我的另一篇文章:。
用到的庫
requests
Beautiful Soup
openpyxl
1. 爬取豆瓣電影top250,存到excel表格中#!/usr/bin/env python # encoding=utf-8 import requests,re import codecs from bs4 import BeautifulSoup from openpyxl import Workbook wb = Workbook() dest_filename = "電影.xlsx" ws1 = wb.active ws1.title = "電影top250" DOWNLOAD_URL = "http://movie.douban.com/top250/" def download_page(url): """獲取url地址頁面內容""" headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36" } data = requests.get(url, headers=headers).content return data def get_li(doc): soup = BeautifulSoup(doc, "html.parser") ol = soup.find("ol", class_="grid_view") name = [] #名字 star_con = [] #評價人數 score = [] #評分 info_list = [] #短評 for i in ol.find_all("li"): detail = i.find("div", attrs={"class": "hd"}) movie_name = detail.find("span", attrs={"class": "title"}).get_text() #電影名字 level_star = i.find("span",attrs={"class":"rating_num"}).get_text() #評分 star = i.find("div",attrs={"class":"star"}) star_num = star.find(text=re.compile("評價")) #評價 info = i.find("span",attrs={"class":"inq"}) #短評 if info: #判斷是否有短評 info_list.append(info.get_text()) else: info_list.append("無") score.append(level_star) name.append(movie_name) star_con.append(star_num) page = soup.find("span", attrs={"class": "next"}).find("a") #獲取下一頁 if page: return name,star_con,score,info_list,DOWNLOAD_URL + page["href"] return name,star_con,score,info_list,None def main(): url = DOWNLOAD_URL name = [] star_con=[] score = [] info = [] while url: doc = download_page(url) movie,star,level_num,info_list,url = get_li(doc) name = name + movie star_con = star_con + star score = score+level_num info = info+ info_list for (i,m,o,p) in zip(name,star_con,score,info): col_A = "A%s"%(name.index(i)+1) col_B = "B%s"%(name.index(i)+1) col_C = "C%s"%(name.index(i)+1) col_D = "D%s"%(name.index(i)+1) ws1[col_A]=i ws1[col_B] = m ws1[col_C] = o ws1[col_D] = p wb.save(filename=dest_filename) if __name__ == "__main__": main()
結果如下:
2. 爬取拉勾網Python職位信息職位信息存儲在json中,獲取到json對象,再從中遍歷出公司名、地址、待遇等信息。
import requests from openpyxl import Workbook def get_json(url, page, lang_name): data = {"first": "true", "pn": page, "kd": lang_name} json = requests.post(url, data).json() list_con = json["content"]["positionResult"]["result"] info_list = [] for i in list_con: info = [] info.append(i["companyShortName"]) info.append(i["companyName"]) info.append(i["salary"]) info.append(i["city"]) info.append(i["education"]) info_list.append(info) return info_list def main(): lang_name = input("職位名:") page = 1 url = "http://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false" info_result = [] while page < 31: info = get_json(url, page, lang_name) info_result = info_result + info page += 1 wb = Workbook() ws1 = wb.active ws1.title = lang_name for row in info_result: ws1.append(row) wb.save("職位信息.xlsx") if __name__ == "__main__": main()
運行結果:
3. 模擬登錄知乎通過開發者工具,獲取post的數據。
import requests,time from bs4 import BeautifulSoup def get_captcha(data): with open("captcha.gif","wb") as fp: fp.write(data) return input("輸入驗證碼:") def login(username,password,oncaptcha): sessiona = requests.Session() headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0"} _xsrf = BeautifulSoup(sessiona.get("https://www.zhihu.com/#signin",headers=headers).content,"html.parser").find("input",attrs={"name":"_xsrf"}).get("value") captcha_content = sessiona.get("https://www.zhihu.com/captcha.gif?r=%d&type=login"%(time.time()*1000),headers=headers).content data = { "_xsrf":_xsrf, "email":username, "password":password, "remember_me":True, "captcha":oncaptcha(captcha_content) } resp = sessiona.post("https://www.zhihu.com/login/email",data,headers=headers).content print(resp) return resp if __name__ == "__main__": login("your_email","your_password",get_captcha)
運行后會在運行目錄下得到驗證碼圖片:
輸入驗證碼后得到如下響應結果表明登錄成功。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38007.html
摘要:前言之前斷斷續續學習了,今天就拿拉勾網練練手,順便通過數據了解了解最近的招聘行情哈方面算是萌新一個吧,希望可以和大家共同學習和進步。 前言 之前斷斷續續學習了node.js,今天就拿拉勾網練練手,順便通過數據了解了解最近的招聘行情哈!node方面算是萌新一個吧,希望可以和大家共同學習和進步。 一、概要 我們首先需要明確具體的需求: 可以通過node index 城市 職位來爬取相關信...
摘要:拉勾網的爬蟲還是有一定的難度的所以我們今天就爬取試一下其實并沒有太大的難度只要我們用好分析一下請求就會其實沒有什么難度上代碼親測可用拉鉤代碼 拉勾網的爬蟲還是有一定的難度的 所以我們今天就爬取試一下 其實并沒有太大的難度 只要我們用好network 分析一下請求 就會其實沒有什么難度 上代碼 2019-05-22 親測可用 拉鉤代碼
摘要:最近在研究區塊鏈,閑來無事抓取了拉勾網上條區塊鏈相關的招聘信息。拉勾網的反爬蟲做的還是比較好的,畢竟自己也知道這種做招聘信息聚合的網站很容易被爬,而且比起妹子圖這種網站,開發的技術水平應該高不少。 最近在研究區塊鏈,閑來無事抓取了拉勾網上450條區塊鏈相關的招聘信息。過程及結果如下。 拉勾網爬取 首先是從拉勾網爬取數據,用的requests庫。拉勾網的反爬蟲做的還是比較好的,畢竟自己也...
摘要:官方解釋如下提供一些簡單的式的函數用來處理導航搜索修改分析樹等功能。廢話不多說,我們來試一下吧安裝目前已經停止開發,推薦在現在的項目中使用,不過它已經被移植到了,也就是說導入時我們需要。 上一節我們介紹了正則表達式,它的內容其實還是蠻多的,如果一個正則匹配稍有差池,那可能程序就處在永久的循環之中,而且有的小伙伴們也對寫正則表達式的寫法用得不熟練,沒關系,我們還有一個更強大的工具,叫Be...
摘要:然后準備再去抓下拉勾網的招聘數據,這也是個相對優秀的專業招聘網站了,數據也相當多,想當初找實習找正式工作,都是在這兩個上找的,其他的網站幾乎都沒看。 原文地址:http://www.jtahstu.com/blog/s... Pyhton爬蟲實戰 - 抓取BOSS直聘職位描述 和 數據清洗 零、致謝 感謝BOSS直聘相對權威的招聘信息,使本人有了這次比較有意思的研究之旅。 由于爬蟲持續...
閱讀 3120·2023-04-25 15:02
閱讀 2818·2021-11-23 09:51
閱讀 2034·2021-09-27 13:47
閱讀 1992·2021-09-13 10:33
閱讀 973·2019-08-30 15:54
閱讀 2646·2019-08-30 15:53
閱讀 2861·2019-08-29 13:58
閱讀 893·2019-08-29 13:54