У меня есть еще одна проблема с моим скребком BeautifulSoup, и я надеялся, что вы сможете мне помочь. После добавления кода для извлечения информации со страниц сведений, теперь скребок очищает только первую страницу и больше не очищает несколько указанных страниц.
Я предполагаю, что это связано с l oop, но Я не уверен, как это определить, чтобы убедиться, что это не вызывает проблем.
Есть ли лучший способ разбивки на страницы?
Я опубликовал полный код и выделил новый раздел жирным шрифтом это вызывает проблемы.
Полный код:
from bs4 import BeautifulSoup
import scrapy
import requests
import csv
import time
import os
pages = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
with open(r'csv', 'a', encoding='utf-8', newline='') as f_output:
csv_print = csv.writer(f_output)
file_is_empty = os.stat(r'C:\csv').st_size == 0
if file_is_empty:
csv_print.writerow(['Title', 'Company', 'Location', 'Salary', 'Summary', 'Link', 'Description', 'URL'])
for page in pages:
source = requests.get('https://www.indeed.com/jobs?q=work+from+home&l=United+States&fromage=1&start={}'.format(page)).text
soup = BeautifulSoup(source, 'lxml')
results = soup.findAll("div", {"class": "result"})
for jobs in soup.find_all(class_='result'):
try:
title = jobs.h2.text.strip()
except Exception as e:
title = None
print('Title:', title)
try:
company = jobs.span.text.strip()
except Exception as e:
company = None
print('Company:', company)
try:
location = jobs.find('span', class_='location').text.strip()
except Exception as e:
location = None
print('Location:', location)
try:
salary = jobs.find('span', class_='no-wrap').text.strip()
except Exception as e:
salary = None
print('Salary:', salary)
try:
summary = soup.find('div', class_='summary').text.strip()
except Exception as e:
summary = None
print('Summary:', summary)
link = jobs.a['href']
if 'http' not in link:
link = ("https://www.indeed.com" + link)
print('Link:', link)
**page = requests.get(link)
soup = BeautifulSoup(page.content, 'html.parser')
job_description = soup.find('div', id='jobDescriptionText').decode_contents(formatter="html")
print('job_description:', job_description)
try:
url = soup.find('div', class_='icl-u-lg-hide').attrs['href']
except Exception as e:
url = None
print('url:', url)**
csv_print.writerow((title, company, location, salary, summary, link, job_description, url))
print('--------')
time.sleep(0.5)
Большое вам спасибо :) Ребята, вы лучшие!