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]*?)