Python Beautifulsoup и запись в CSV (несколько URL-адресов) - PullRequest
0 голосов
/ 10 июня 2018

Это то, что я имею до сих пор:

import csv, re
from bs4 import BeautifulSoup as soup
import requests
flag = False
with open('filename.csv', 'w') as f:
  write = csv.writer(f)
  for i in range(38050, 38050): ##this is so I can test run with one page 
    s = soup(requests.get('https://howlongtobeat.com/game.php?id={i}').text, 'html.parser')
    if not flag: #write header to file once
      write.writerow(['Name', 'Length']+[re.sub('[:\n]+', '', i.find('strong').text) for i in s.find_all('div', {'class':'profile_info'})])
      flag = True
  ## this is for if there is no page or an error  
content = s.find('div', {"class":'profile_header shadow_text'})
if content: 
  name = s.find('div', {"class":'profile_header shadow_text'}).text
  length = [[i.find('h5').text, i.find("div").text] for i in s.find_all('li', {'class':'time_100'})]
  stats = [re.sub('\n+[\w\s]+:\n+', '', i.text) for i in s.find_all('div', {'class':'profile_info'})]

это не пишет в CSV и не знаю, почему (я только начинающий)

Я пытаюсьсоздайте цикл, чтобы проверить, существуют ли эти элементы, и если да, запишите их в 'hltb.csv'

, как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Вам может потребоваться увеличить значение в цикле for.

page = 38050
for i in range(0,page):
    page += 1

Этот сценарий будет работать вечно.Вам нужно добавить какой-нибудь обработчик HTTP STATUS CODE 404 на случай, если вы его не найдете, чтобы скрипт мог завершиться.Я думаю, что вы делаете плохой подход. Я предпочел бы получить доступ к каждой ссылке из меню сайта и сканировать все, что связано с URL https://howlongtobeat.com/game.php?id=, так что я буду знать конечные URL-адреса, где искать, вместо того, чтобы угадывать инкрементные идентификаторы

0 голосов
/ 10 июня 2018

Вы перебираете пустой диапазон.

for i in range(38050, 38050):

Размер этого диапазона равен 0. Попробуйте увеличить максимум на 1.

for i in range(38050, 38051):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...