pythonは這い出し、応答状態は正しいが、内容は解析できない.
1543 ワード
登ったのは58同城賃貸情報で、プログラムを実行した後、カーソルが点滅しているだけで、長い間結果は表示されません.ステータスコードは200であるため、正規表現が妥当かどうかを考慮する.ページソースコードに改行文字が大量に入っているため、最初はマッチングに[sS]*?取得するコンテンツが基本的に1行であることは考慮されていないので,簡略化された正則はコンテンツを取得する際に(.*?)を用いる.再びプログラムを実行すると、結果が出ます.
私は初めて爬虫類を学んで、もしもっと良い解決方法があれば、評論の交流を歓迎します!
元の正規表現は次のとおりです.
簡略化された式は次のとおりです.
完全なプログラム;
私は初めて爬虫類を学んで、もしもっと良い解決方法があれば、評論の交流を歓迎します!
元の正規表現は次のとおりです.
pat = r'[\s\S]*?rel="nofollow" >([\s\S]*?)[\s\S]*?room strongbox">([\s\S]*?) ([\s\S]*?)[\s\S]*?([\s\S]*?)[\s\S]*? '
簡略化された式は次のとおりです.
pat = r'(.*?) (.*?)([\d]*?)
完全なプログラム;
import requests
from requests.exceptions import RequestException
import re,json,os
def getpage(num):
''' '''
url = 'https://bj.58.com/chuzu/pn'+str(num)+'/?ClickID=2'
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36"
}
try:
res = requests.get(url,headers=headers)
if res.status_code == 200:
#
html = res.content.decode('utf-8')
# ,
html2 = html[25050:45050]
#
# pat = r'[\s\S]*?rel="nofollow" >([\s\S]*?)[\s\S]*?room strongbox">([\s\S]*?) ([\s\S]*?)[\s\S]*?([\s\S]*?)[\s\S]*? '
# re
pat = r'(.*?) (.*?)([\d]*?)