1. 程式人生 > >爬取順企網商戶聯絡方式

爬取順企網商戶聯絡方式

暑假實習的時候,老闆讓收集北上廣深公司的聯絡方式,最好是email或者手機。鑑於老闆不想花錢,就拜託本菜鳥寫爬蟲,去爬取各色B2B網站企業資訊。

現在的時代,資料就是金錢,各大網站是不可能讓你輕而易舉爬走資料滴,即使這些資料都是開源的。常見的反爬手段包括禁止頻繁訪問,將手機號碼轉換成圖片顯示。有些喪心病狂的網站,反爬工程師每月拿2萬大洋,讓萌新瑟瑟發抖。


順企網是個比較有意思的網站(截圖如下)(從爬蟲角度來說),且聽我細細道來。


1) 解決頻繁訪問


博主嘗試過每傳送一次請求,休息2秒,然而在300-400個請求後被拒絕,爬蟲光榮陣亡。出離憤怒的博主,將出錯的url通過瀏覽器訪問,返回以下介面。

 

手動點選“點選繼續”這個超連結後,即可跳轉到需要的公司資訊介面,正常訪問(傳送請求)。

由於要獲取的企業數量在萬級,必須要解決這個因頻繁訪問被驗證非機器人的問題。

最直接的思路就是如何讓python模擬瀏覽器點選“點選繼續”並跳轉?

於是博主右鍵檢視原始碼,如下

可能您訪問的有點快了,請... <a href="#"onclick="window.location='/php/banip.php?sid=a57f9e4c0ea4f82548581612573b0e61'">點選繼續</a>

做了個簡單嘗試,將php及後面一串字串貼上至“http://www.11467.com/

”(順企網主頁url)後面,重新整理後瀏覽器顯示跳轉介面,如下:


這時,再將方才請求的公司url貼上至位址列,即可得到正確展示公司資訊的頁面。

於是乎,用python指令碼實現,得到以下程式碼:

except:   #請求過於頻繁,無法得到企業正常資訊頁
        print "Crawler detected!"
        print url
        newPage = requests.get(r'http://www.11467.com/php/banip.php?sid=a57f9e4c0ea4f82548581612573b0e61')   #sid因session而異
        print "\n"
        return

2) 解決圖片式手機號碼

B2B網站為防止商家聯絡方式(特別是手機號碼)被大量爬取,將手機號碼以圖片形式顯示。最直觀的解決方法就是獲取圖片來源的url,下載至本地,再用python中圖片識別的模組去轉換成數字。

博主嘗試過pytesseract(tesseract的python API),並將輸出設定為僅數字,然而識別效果依然差強人意。博主心一橫,差點走上了自己做training data的不歸路。突然,博主發現這些圖片的url與圖片中的手機號碼十分相似!

譬如手機號為13636447122的圖片url為http://simg.11467.com/phone/3133363336343437313232.jpg,手機號中的每個數字在url的數字段都出現過,而且是間隔著一個“3”。看穿之後,事情就好辦很多了。通過下面一段程式碼就可以提取手機號了,媽媽再也不用擔心圖片識別準確率底下了!因為根本就不用下載並識別圖片了。

codeMobile = re.findall('([0-9]+).jpg',mobpicA)[0]    #正則表示式獲取圖片來源url的數字部分,mobpicA為圖片url
mobile = '' 
for i in range(11):
        mobile += codeMobile[2*i + 1]

完全指令碼GitHub連結:https://github.com/chengnn119/contactCrawlers 

檔名:Shunqi_SH.py, Shunqi_SH_pages.py


相關推薦

商戶聯絡方式

暑假實習的時候,老闆讓收集北上廣深公司的聯絡方式,最好是email或者手機。鑑於老闆不想花錢,就拜託本菜鳥寫爬蟲,去爬取各色B2B網站企業資訊。 現在的時代,資料就是金錢,各大網站是不可能讓你輕而易舉爬走資料滴,即使這些資料都是開源的。常見的反爬手段包括禁止頻繁訪問,將手機

三個Python爬蟲版本,帶你以各種方式校花,輕鬆入門爬蟲

  爬蟲是什麼?   進群進群:943752371可以獲取Python各類入門學習資料! 這是我的微信公眾號【Python程式設計之家】各位大佬用空可以關注下,每天更新Python學習方法,感謝! 如果我們把網際網路比作一張大的蜘蛛網,資料便是存放

Node.js爬蟲-慕課課程信息

reac 分享 function apt txt sta eject 賦值 find 第一次學習Node.js爬蟲,所以這時一個簡單的爬蟲,Node.js的好處就是可以並發的執行 這個爬蟲主要就是獲取慕課網的課程信息,並把獲得的信息存儲到一個文件中,其中要用到cheerio

Scrapy慕課(imooc)所有課程數據並存入MySQL數據庫

start table ise utf-8 action jpg yield star root 爬取目標:使用scrapy爬取所有課程數據,分別為 1.課程名 2.課程簡介 3.課程等級 4.學習人數 並存入MySQL數據庫 (目標網址 http://www.imoo

Python爬蟲之煎蛋妹子圖

創建目錄 req add 註意 not 相同 esp mpi python3 這篇文章通過簡單的Python爬蟲(未使用框架,僅供娛樂)獲取並下載煎蛋網妹子圖指定頁面或全部圖片,並將圖片下載到磁盤。 首先導入模塊:urllib.request、re、os import

Httpclient優酷

num 內容 htm clas ets author download auth isod 參考:http://www.cnblogs.com/lchzls/p/6277210.html /httpClient/src/main/java/com/louis/youku

05 華為官VMALL的手機評論

wid gin lec image json數據包 線程 size 使用 ges 項目地址:copywang/spiders_collection 實現功能 爬取手機界面的所有手機評論列表 存儲到MONGODB 步驟 獲取首頁的手機列表,並獲取各個手機標題和詳情頁的U

我的第一個Scrapy 程序 - 當當信息

ref http ide ces passwd lds url ext != 前面已經安裝了Scrapy,下面來實現第一個測試程序。 概述 Scrapy是一個爬蟲框架,他的基本流程如下所示(下面截圖來自互聯網) 簡單的說,我們需要寫一個item文件,定義返回的數據結構;寫

4-15 新浪

xlsx size text num mos das rip bs4 page import requests 3 from bs4 import BeautifulSoup 4 from datetime import datetime 5 import re 6

起點中文小說介紹信息

OS tex 2.0 user agent lee idp url pri 字數的信息(word)沒有得到缺失 import xlwt import requests from lxml import etree import time all_info_list=[]

scrapy案例:翼蜂絡新聞列表和詳情頁面

model rap name lB htm nod meta http AR # -*- coding: utf-8 -*- import scrapy from Demo.items import DemoItem class AbcSpider(scrapy.Sp

用Python多線程實現生產者消費者模式鬥圖的表情圖片

Python什麽是生產者消費者模式 某些模塊負責生產數據,這些數據由其他模塊來負責處理(此處的模塊可能是:函數、線程、進程等)。產生數據的模塊稱為生產者,而處理數據的模塊稱為消費者。在生產者與消費者之間的緩沖區稱之為倉庫。生產者負責往倉庫運輸商品,而消費者負責從倉庫裏取出商品,這就構成了生產者消費者模式。 生

Scrapy爬蟲(5)當當圖書暢銷榜

The log sdn detail iss 就是 pan 微信公眾號 打開 ??本次將會使用Scrapy來爬取當當網的圖書暢銷榜,其網頁截圖如下: ??我們的爬蟲將會把每本書的排名,書名,作者,出版社,價格以及評論數爬取出來,並保存為csv格式的文件。項目的具體創建就不

ruby 爬蟲拉鉤職位信息,產生詞雲報告

content 數據持久化 lag works wid spa 代碼 職位 要求 思路:1.獲取拉勾網搜索到職位的頁數    2.調用接口獲取職位id    3.根據職位id訪問頁面,匹配出關鍵字    url訪問采用unirest,由於拉鉤反爬蟲,短時間內頻繁訪問會被

selelinum+PhantomJS 拉鉤職位

one while 對象 bili exe 5.0 設置 expect money 使用selenium+PhantomJS爬取拉鉤網職位信息,保存在csv文件至本地磁盤 拉鉤網的職位頁面,點擊下一頁,職位信息加載,但是瀏覽器的url的不變,說明數據不是發送get請求得到的

python3爬蟲煎蛋妹紙圖片

port 商業 技術分享 爬取 其中 lar c函數 base 技術 其實之前實現過這個功能,是使用selenium模擬瀏覽器頁面點擊來完成的,但是效率實際上相對來說較低。本次以解密參數來完成爬取的過程。 首先打開煎蛋網http://jandan.net/ooxx,查看網頁

第三篇 - 豆瓣電影

zip def str 一個 eva 電影 pycha 系統 瀏覽器 環境:python 3.6 pycharm 模塊:requests,json 1 import requests 2 import json 3 4 #請求頭 5 headers = {

爬蟲----校花視頻

done orm ref div submit false lex clas gbk import requests import re import time import hashlib def get_page(url): print(‘GE

requests中國天氣深圳七日天氣

dumps pat txt all resp att .sh asc code 1 # conding=utf-8 2 import json 3 import re 4 import requests 5 6 def get_data(url): 7

利用高德API + Python鏈家租房資訊 01

看了實驗樓的專案發現五八同城爬取還是有點難度所以轉戰鏈家 實驗程式碼如下 from bs4 import BeautifulSoup from urllib.request import urlopen import csv url = 'https://gz.lia