[python]ソフトウェアエンジニアリング職のネットワーク爬虫類を確保https://www.51job.com
3381 ワード
まずはこのサイトのhttps://www.51job.com/robots.txtページ
ヒント:
注意:ネットワーク爬虫類:robotsを自動的または人工的に識別する.txt,さらにコンテンツ抽出 を行う.制約:robotsプロトコルは推奨するが非制約であり、遵守しないと法的リスクが存在する可能性がある 1つのサイトがrobotsプロトコルを設定しない場合、すべてのコンテンツが這い出すことができることを示しているので、這い出すことができるコンテンツです.
ソースプログラムは次のとおりです.
登録されたエントリは、職階会社の所在地の報酬日付のウェブサイトとして分布し、保存パスはE:/data/positionである.txtは、パスまたはファイルフォーマットを自分で変更できます.
ヒント:
File not found
, , 。
:
, 。
www.51job.com , 。
, 。
注意:
ソースプログラムは次のとおりです.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File : HtmlParser.py
# @Author:
# @Date : 2020/2/28
# @Desc :
# @Contact : [email protected]
from bs4 import BeautifulSoup
import requests
import csv
import re
import io
#
head = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
}
#
url = "https://search.51job.com/list/000000,000000,0000,00,9,99,%25E8%25BD%25AF%25E4%25BB%25B6,2,1.html?lang=c&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare="
# csv
def headcsv():
with open('/position.csv', 'w', encoding='utf-8', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow([" ", " ", " ", " ", " ", " "])
# txt
def headtxt():
ftxt = open('E:/data/position.txt', 'w', encoding='utf-8')
ftxt.write(" ")
ftxt.close()
def position(url, head):
# fcsv = open('/position.csv', 'a', encoding='utf-8', newline='')
ftxt = open('E:/data/position.txt', 'a', encoding='utf-8')
try:
r = requests.get(url, headers=head, timeout=3)
#
r.encoding = r.apparent_encoding
print(r.apparent_encoding)
#
print(r.status_code)
#
# print(r.text)
# print(soup.prettify())
text = r.text
soup = BeautifulSoup(text, 'html.parser')
#
item = soup.find_all(class_='el', recursive=True)
num = 0
for i in item:
num += 1
if num > 16:
itemdetail = i.text.replace(" ", "").replace("
", " ").replace(" ", " ").lstrip() + i.find("a").attrs['href']
print(itemdetail)
ftxt.write(itemdetail.replace("
","")+'\r')
print(" ")
ftxt.close()
except:
print(" !")
def write(url, head):
for i in range(1, 2000):
url = "https://search.51job.com/list/000000,000000,0000,00,9,99,%25E8%25BD%25AF%25E4%25BB%25B6,2,"+str(i)+".html?lang=c&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare="
print(url)
position(url, head)
if __name__ == "__main__":
# head()
write(url, head)
登録されたエントリは、職階会社の所在地の報酬日付のウェブサイトとして分布し、保存パスはE:/data/positionである.txtは、パスまたはファイルフォーマットを自分で変更できます.