python beautifulsoup和写入CSV(多个URL)

时间:2018-06-10 01:32:05

标签: python loops csv web-scraping beautifulsoup

这是我到目前为止所做的:

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 :(得分:1)

你正在迭代一个空的范围。

svcutil http://localhost/MyService/Service.svc  /Language=c#  /t:Code  /out:C:\Service\ServiceProxy.cs /config:C:\Service\ServiceProxy.config

此范围的大小为0.尝试将最大值增加1。

for i in range(38050, 38050):

答案 1 :(得分:0)

您可能需要增加for循环的值。

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

此脚本将永久运行。您需要添加某种HTTP STATUS CODE 404处理程序,以防您找不到任何脚本可以结束。我认为你所做的是一种糟糕的方法我宁愿从网站的菜单中访问每个链接并抓取与URL https://howlongtobeat.com/game.php?id=相关的任何内容,这样我就会知道有限的Urls在哪里查看而不是猜测增量ID