Многопоточность в парсинге Python/BeautifulSoup

Привет, я пошел на скейпирование тех же данных с веб-сайта. Но когда я начал использовать многопоточность, у меня возникла ошибка это мой код

from multiprocessing.dummy import Pool  # This is a thread-based Pool
from multiprocessing import cpu_count

def crawlToCSV(url):
    print(url)
#    req = requests.get(url)
#    detail = BeautifulSoup(req.text, "lxml")
#    images=[]
#    for img in detail.find_all("img"):
#        images.append(img["src"])
#
#    return images
    return "k"


if __name__ == "__main__":
    FILE_LINES = 10000000
    NUM_WORKERS = cpu_count() * 2
    chunksize = FILE_LINES // NUM_WORKERS * 4   # Try to get a good chunksize. You're probably going to have to tweak this, though. Try smaller and lower values and see how performance changes.
    pool = Pool(NUM_WORKERS)
    req = requests.get('https://m.web.com/list?cg=1000')
    soup = BeautifulSoup(req.text, "lxml")
    i=0
    for a in soup.find_all("a"):        
        if "ad?id" not in a["href"]:
            continue
        i=i+1
        if i==3 :
            break
        url=a["href"]
        print(url)
        results = pool.map(crawlToCSV, url)
    with open("Output.csv", "ab") as f:
        writeFile = csv.writer(f)
        for result in results: 
            writeFile.writerow(result)

Но в моей консоли у меня есть этот Многопоточность в парсинге Python/BeautifulSoup

Как я могу получить URL-адрес в crawlToCSV без \n между символами

Не могу воспроизвести сценарий. Я скопировал код, добавил import requests вверху и получил сообщение об ошибке HTTPSConnectionPool(host='m.web.com', port=443): Max retries exceeded with url: /list?cg=1000 (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnect‌​ion object at 0x000001E399799AC8>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed',)). Я не думаю, что это вопрос mcve

Reedinationer 05.03.2019 19:31

я изменил название веб-сайта, и у меня есть запросы на импорт в моем коде

Ruydo 05.03.2019 21:11

хорошо, с кодом, который вы разместили, я не могу воспроизвести ошибку, поэтому я не могу помочь больше, чем предложить решение возможно. Похоже, ваш код думает, что передает каждому рабочему письмо вместо желаемого URL-адреса. Возможно, попробуйте сохранить URL-адрес в виде списка с одной строкой, содержащей URL-адрес. Таким образом, когда он пытается выполнить итерацию по элементам, каждый элемент будет URL-адресом, а не буквой от одного.

Reedinationer 05.03.2019 21:42

Да, спасибо, у меня есть список использования, и в функции я использую req = request.get(url[:]) чтобы получить все URL!! но это работает спасибо

Ruydo 06.03.2019 11:38
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
124
0

Другие вопросы по теме