Как написать CSV и вставить данные скрести - PullRequest
0 голосов
/ 26 марта 2019

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

Я успешно удалил данные, но я хочу сохранить их в CSV. Ниже приведен мой код

Мне нужно написать код, чтобы извлечь все HTML с веб-сайта, а затем сохранить его в CSV-файл.

Я считаю, что мне как-то нужно превратить ссылки в список, а затем написать список, но я не уверен, как это сделать.

Это то, что у меня так далеко:

import requests
import time
from bs4 import BeautifulSoup
import csv



# Collect and parse first page
page = requests.get('https://www.myamcat.com/jobs')
soup = BeautifulSoup(page.content, 'lxml')

print("Wait Scrapper is working on ")
time.sleep(10)
if(page.status_code != 200):

    print("Error in Srapping check the url")
else:

    print("Successfully scrape the data")
    time.sleep(10)
    print("Loading data in csv")
    file = csv.writer(open('dataminer.csv', 'w'))
    file.writerow(['ProfileName', 'CompanyName', 'Salary', 'Job', 'Location']) 

    for pname in soup.find_all(class_="profile-name"):

        #print(pname.text)
        profname = pname.text
        file.writerow([profname, ])

    for cname in soup.find_all(class_="company_name"):

        print(cname.text)

    for salary in soup.find_all(class_="salary"):

        print(salary.text)


    for lpa in soup.find_all(class_="jobText"):

        print(lpa.text) 

    for loc in soup.find_all(class_="location"):

        print(loc.text)







Ответы [ 2 ]

0 голосов
/ 26 марта 2019

Помимо того, что вы получили в другом ответе, вы также можете одновременно соскребать и записывать содержимое.Я использовал .select () вместо .find_all () , чтобы добиться того же.

import csv
import requests
from bs4 import BeautifulSoup

URL = "https://www.myamcat.com/jobs"

page = requests.get(URL)
soup = BeautifulSoup(page.text, 'lxml')
with open('myamcat_doc.csv','w',newline="",encoding="utf-8") as f:
    writer = csv.writer(f)
    writer.writerow(['pname','cname','salary','loc'])

    for item in soup.select(".job-listing .content"):
        pname = item.select_one(".profile-name h3").get_text(strip=True)
        cname = item.select_one(".company_name").get_text(strip=True)
        salary = item.select_one(".salary .jobText").get_text(strip=True)
        loc = item.select_one(".location .jobText").get_text(strip=True)
        writer.writerow([pname,cname,salary,loc])
0 голосов
/ 26 марта 2019

Сделайте дикт и сохраните в нем данные, затем сохраните в CSV, проверьте код ниже!

import requests
import time
from bs4 import BeautifulSoup
import csv



# Collect and parse first page
page = requests.get('https://www.myamcat.com/jobs')
soup = BeautifulSoup(page.content, 'lxml')
data = []
print("Wait Scrapper is working on ")
if(page.status_code != 200):
    print("Error in Srapping check the url")
else:
    print("Successfully scrape the data")
    for x in soup.find_all('div',attrs={'class':'job-page'}):
        data.append({
            'pname':x.find(class_="profile-name").text.encode('utf-8'),
            'cname':x.find(class_="company_name").text.encode('utf-8'),
            'salary':x.find(class_="salary").text.encode('utf-8'),
            'lpa':x.find(class_="jobText").text.encode('utf-8'),
            'loc':x.find(class_="location").text.encode('utf-8')})

print("Loading data in csv")
with open('dataminer.csv', 'w') as f:
    fields = ['salary', 'loc', 'cname', 'pname', 'lpa']
    writer = csv.DictWriter(f, fieldnames=fields)
    writer.writeheader()
    writer.writerows(data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...