Прекрасный Суп соскоб перестает работать после того, как его один раз опустили на соскоб - PullRequest
0 голосов
/ 05 марта 2020

Привет, я создаю небольшой скребок, который ползает по ресторану tripadvisor и заполняет их электронные письма в CSV-файл.

Как ни странно, мой код работает примерно на 300 URL из моего списка, который я проанализировал и перестал работать. Я попытался запустить cli снова, и он просто завершит функцию после написания заголовка. Ниже приведен код для справки. Заранее извиняюсь, если я не могу дать это в лучшем контексте.

# -*- coding: utf-8 -*-
import pandas as pd
import csv
from bs4 import BeautifulSoup
from selenium import webdriver
from fake_useragent import UserAgent
import requests
import time
import re
import logging

#request domain
domain = 'https://www.tripadvisor.com.my'
ua = UserAgent(verify_ssl=False)
header = {'User-Agent':str(ua.chrome)}
#extracting data from excel file that were parsed
df = pd.read_csv('./data/url_parser.csv')
#calculating the length of the total restaurants that were parsed.
total_restaurants = len(df)
debug = False
if debug:
    limit = 100
else:
    limit = None
#writing data into excel file
with open('./data/content_parser.csv', 'a') as csvfile:
    fieldnames = [
                    'restaurant_id',
                    'email'
                 ]
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    #for each url in the parsed data, scrape the url website
    for index, u in enumerate(df['url'][:limit]):
        restaurant_id = df['restaurant_id'][index]
        print('process = {}/{}'.format(index+1, total_restaurants))
        r = requests.get(u, headers=header)
        soup = BeautifulSoup(r.text, 'html.parser')
        # block = the block that we wanted to get the website url from
        block = soup.find('div', {'class':"restaurants-detail-overview-cards-LocationOverviewCard__detailLink--iyzJI restaurants-detail-overview-cards-LocationOverviewCard__contactItem--1flT6"})
        email = soup.select('a[href^=mailto]')
        for i in email:
            href=i['href']
        try:
            str1, str2 = href.split(':')
        except ValueError:
            break
        #appended email that removes all the html code.
        email.append(str2)

        #pasting the data scraped and putting into use.
        writer.writerow(
                         {
                            'restaurant_id':restaurant_id,
                            'email':str2
                         }
                        )
        time.sleep(15)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...