之前用的一個多程式python爬蟲
版權宣告:本文可能為博主原創文章,若標明出處可隨便轉載。 https://blog.csdn.net/Jailman/article/details/77573959
#!C:Python27python.exe
#coding=utf8
import os
import urllib
import urllib2
from bs4 import BeautifulSoup
from multiprocessing import Pool
import socket
socket.setdefaulttimeout(60)
def url_open(url):
user_agent = `Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36`
headers = {`User-Agent`: user_agent}
request = urllib2.Request(url=url, headers=headers)
try:
page = urllib2.urlopen(request, timeout=60)
except urllib2.HTTPError as e:
return 1
contents = page.read()
# print contents
soup = BeautifulSoup(contents.decode(`gb2312`,`ignore`), "lxml")
return soup
def retrieve_img(dir, link):
if url_open(link) != 1:
soup = url_open(link)
for line in soup.find_all("div", "ContentBox"):
img_list = line.find_all(`img`)
for img_item in img_list:
raw_img = img_item.get(`src`)
img_url = `http:` + raw_img
img_name = raw_img.split(`/`)[-1]
print "Download: %s" % img_url
# print img_name
urllib.urlretrieve(img_url, dir + `\` + img_name)
def crawler(root, url):
# print url
if url_open(url) != 1:
soup = url_open(url)
# print soup
for line in soup.find_all("div", "box_con newslist"):
li = line.find_all(`li`)
for a in li:
href = a.find_all(`a`)
link = root + href[0].get(`href`)
text = href[0].get_text()
# print link
print "Creating directory %s..." % text
if not os.path.isdir(text):
try:
os.mkdir(text)
if os.path.isdir(text):
print "Directory %s successfully created!" % text
print "Crawling image page %s." % link
retrieve_img(text, link)
except IOError, e:
print e
elif os.path.isdir(text):
print "Directory %s already exists!" % text
print "Crawling image page %s." % link
retrieve_img(text, link)
# break #func test
def single_func(num):
root = `http://xxx.com`
url = "http://xxx.com/articlelist/?20-" + str(num) + `.html`
crawler(root, url)
if __name__ == `__main__`:
# single_func(1) #func test
pool = Pool(processes=8)
for i in range(1, 187):
result = pool.apply_async(single_func, (i,))
pool.close()
pool.join()
if result.successful():
print `Successful!`
相關文章
- 爬蟲:多程式爬蟲爬蟲
- 一個簡單的python爬蟲程式Python爬蟲
- python爬蟲的最佳實踐(六)--爬蟲中的多程式Python爬蟲
- python爬蟲58同城(多個資訊一次爬取)Python爬蟲
- 用Python寫一個簡單的微博爬蟲Python爬蟲
- python爬蟲初探--第一個python爬蟲專案Python爬蟲
- 《用Python寫網路爬蟲》--編寫第一個網路爬蟲Python爬蟲
- Python使用多程式提高網路爬蟲的爬取速度Python爬蟲
- python爬蟲入門八:多程式/多執行緒Python爬蟲執行緒
- Python 第一個爬蟲,爬取 147 小說Python爬蟲
- 我的第一個Python爬蟲——談心得Python爬蟲
- python爬蟲之多執行緒、多程式+程式碼示例Python爬蟲執行緒
- 5 個用 Python 編寫 web 爬蟲的方法PythonWeb爬蟲
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲
- 分散式爬蟲很難嗎?用Python寫一個小白也能聽懂的分散式知乎爬蟲分散式爬蟲Python
- Python爬蟲深造篇(四)——Scrapy爬蟲框架啟動一個真正的專案Python爬蟲框架
- 如何編寫一個Perl爬蟲程式爬蟲
- 基於 Lua 寫一個爬蟲程式爬蟲
- 使用python的scrapy來編寫一個爬蟲Python爬蟲
- 編寫一個使用wreq庫的爬蟲程式爬蟲
- 【python爬蟲】python爬蟲demoPython爬蟲
- [python 爬蟲]第一個Python爬蟲,爬取某個新浪部落格所有文章並儲存為doc文件Python爬蟲
- Python爬蟲:一些常用的爬蟲技巧總結Python爬蟲
- python網路爬蟲應用_python網路爬蟲應用實戰Python爬蟲
- Python爬蟲和java爬蟲哪個效率高Python爬蟲Java
- 8個最高效的Python爬蟲框架,你用過幾個?Python爬蟲框架
- python網路爬蟲_Python爬蟲:30個小時搞定Python網路爬蟲視訊教程Python爬蟲
- Python爬蟲:一些常用的爬蟲技巧總結(IP,cookie,header,多執行緒)Python爬蟲CookieHeader執行緒
- python爬蟲-33個Python爬蟲專案實戰(推薦)Python爬蟲
- Python爬蟲可以幹什麼?Python爬蟲有什麼用?Python爬蟲
- 用爬蟲寫一個 GitHub Trending API爬蟲GithubAPI
- 用LoadRunner做一個網路爬蟲爬蟲
- Python爬蟲小專案:爬一個圖書網站Python爬蟲網站
- 10個高效的Python爬蟲框架Python爬蟲框架
- 用python寫一個豆瓣短評通用爬蟲(登入、爬取、視覺化)Python爬蟲視覺化
- Python 爬蟲 (四) --多執行緒Python爬蟲執行緒
- (python)爬蟲----八個專案帶你進入爬蟲的世界Python爬蟲
- 不會Python爬蟲?教你一個通用爬蟲思路輕鬆爬取網頁資料Python爬蟲網頁