проблема с заголовками = заголовками при сканировании в Интернете - PullRequest
0 голосов
/ 25 апреля 2020

Я практикую свое сканирование в Интернете, чтобы получить текст с веб-сайта, но у меня есть проблема с моими заголовками = заголовками. когда я запускаю .py, он возвращается так:

AttributeError: 'set' object has no attribute 'items'

мой код выглядит следующим образом:

import requests
import time
import re


headers = {'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'}

f = open('/Users/pgao/Desktop/doupo.rtf','a+')

def get_info(url):
    res = requests.get(url, headers = headers)
    if res.status_code == 200:
        contents = re.findall('<p>(.*?)</p>', res.content.decode('utf-8'),re.S)
        for content in contents:
            f.write(content+'\n')
    else:
        pass

if __name__ == '__main__':
    urls = ['http://www.doupoxs.com/doupocangqiong/{}.html'.format(str(i)) for i in range(2,10)]
    for url in urls:
        get_info(url)
        time.sleep(1)

f.close()

Я борюсь с причиной использования 'headers = headers', так как Некоторое время, когда веб-очистка не нужна, иногда требуется. и результат, где я гуглил, не так уж полезен.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2020

Из документов , headers для requests.get() должно быть dict.

Если вы хотите добавить заголовки HTTP в запрос, просто передайте в dict параметру заголовков.

Вы передали set. Наборы не имеют items() метода. Вот почему вы получаете это AttributeError.

headers = {'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'}

print(type(headers))
# <class 'set'>

Добавьте ключ к вашей переменной headers.

headers = {'User-Agent': 'Mozilla/5.0 .....'}

Редактировать: Обновлено значение ключа для "User-Agent" заголовок.

0 голосов
/ 25 апреля 2020

Заголовок должен быть dict, но вы создали set. Синтаксис похож, но обратите внимание, что ключ имеет следующее: значение пары

header = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...